Meteor Subscription在反应组件中未定义

时间:2016-08-04 02:43:01

标签: meteor reactjs publish subscribe

我正在使用meteor + react并尝试在客户端订阅数据。但是,我一直收到我试图返回的集合未定义的错误。

我的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();
});

My 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

但是,我在server.js文件中明确定义了Reminders。有谁知道什么可能是错的?

提前致谢!!

1 个答案:

答案 0 :(得分:1)

您的收藏仅在服务器端定义。您需要将它放在双面都可访问的文件中,然后从服务器端和客户端代码中导入它。