2016-08-04 2 views
1

Я использую метеорит + реагирую и пытаюсь подписаться на данные на стороне клиента. Тем не менее, я продолжаю получать ошибку, которую собирает коллекция, которую я пытаюсь вернуть, не определен.Meteor Subscription undefined in react component

Мои server.js:

import { Meteor } from 'meteor/meteor'; 
import { Mongo } from 'meteor/mongo'; 
import { check } from 'meteor/check'; 

export const Reminders = new Mongo.Collection('reminders'); 

Meteor.publish('reminders', function() { 
    return Reminders.find(); 
}); 

Мой Reminders.jsx файл:

RemindersList = React.createClass({ 

    mixins: [ReactMeteorData], 

    getInitialState: function() { 
     return { 
      reminders: [ 
       { 
        name: 'Pill 1', 
        description: 'Pill 1 description', 
        time: '9am' 
       }, 

       { 
        name: 'Pill 2', 
        description: 'Pill 2 description', 
        time: '9am' 
       }, 

       { 
        name: 'Pill 3', 
        description: 'Pill 3 description', 
        time: '9am' 
       } 
      ] 
     } 
    }, 

    getMeteorData: function() { 

     var data = {}; 
     var handle = Meteor.subscribe('reminders'); 

     if(handle.ready()) { 
      data.reminders = Reminders.findOne(); //Returns `Reminders` is not defined    

     } 

     return data; 

    }, 

    render: function() { 
     console.log(this.data); //returns an empty object 
     return (
      <h1>Test</h1> 
     ) 
    } 

}); 

Специфическая ошибка я получаю в функции getMeteorData:

Reminders is not defined.

Однако я четко определяю Reminders в моем файле server.js. Кто-нибудь знает, что может быть неправильно?

Спасибо заранее!

ответ

1

Ваша коллекция определена только на стороне сервера. Вам нужно будет поместить его в файл, доступный с обеих сторон, и импортировать его с сервера и на клиентский код.