2015-11-14 5 views
0

Я только что начал небольшой проект на Метеор, имея пару месяцев опыта работы с ним. Я создал коллекцию под названием «Реакции» и импортировал данные csv в MongoDB.Запрос коллекции Meteor (работает на локальном хосте, сбой на сервере)

Теперь, когда я запрашиваю его с localhost (win 7), я получил набор записей, как и ожидалось, но как только я запрошу его с удаленного сервера, у меня есть набор emty.

Как представляется, проблема синхронизации подписки, так как коллекция содержит около 10 тыс. Записей, я добавил предложение waitOn на маршрут Iron Router, но это не помогло.

Я искал похожие проблемы здесь и там, и большинство предложенных waitOn, поэтому у меня закончились идеи.

Пожалуйста, см ниже соответствующие части коды и спасибо заранее за любые подсказки

 
----------/both/collections/Reaction.js ---------------- 

Reactions = new Mongo.Collection('reactions', { idGeneration : 'MONGO'}); 

----------/server/publications.js ---------------- 

    Meteor.publish('reactions', function() { 
     return Reactions.find(); 
    }); 

----------/client/views/subscriptions.js ---------------- 

    Meteor.subscribe('reactions', function() { 
      return Reactions.find(); 
    }); 

----------/both/lib/router.js ---------------- 

    this.route('reactions', { 
     where: 'server', 
     waitOn: function() { 
      return Meteor.subscribe('reactions'); 
     }, 
     action: function() { 
      var action = this.request.body.action; 
      var reactions = Reactions.find({ action: action }).fetch(); 
      console.log('reactions.length = ' + reactions.length); 

ответ

0

Вашего действие маршрута нуждается привлечь рендеринг. Ваш find() может работать внутри функции data:. И почему функция where:? Подписки должны запускаться на клиенте!

this.route('reactions', { 
    waitOn: function() { 
    return Meteor.subscribe('reactions'); 
    }, 
    action: function() { 
    this.render('myLayout'); 
    }, 
    data: function(){ 
    var action = this.request.body.action; 
    return Reactions.find({ action: action }); // you don't need to .fetch(), just return a cursor 
    } 
}); 
+0

Мишель, спасибо, но я забыл дать полную картину проекта. Существует андроид приложение qurying метеор/монго. Вот почему этот маршрут должен быть на сервере, а макет не нужен. Теперь я вижу, что условие waitOn не имеет смысла, поскольку подписка не является серверной. В любом случае, маршрут, похоже, работает как на localhost, я получаю правильный набор записей. Единственная часть, которую я пропускаю, является причиной сбоя на стороне сервера – user3312060

Смежные вопросы