在Meteor中调用collection.fineOne时获取未定义

时间:2014-03-06 03:27:45

标签: javascript mongodb meteor iron-router

这是我的应用的root中的router.js文件。出于某种原因,我一直未定义question

Router.map( function() {
    this.route('question_display', {
        path: '/questions/:_id/:title?',
        template: 'display_question',
        yieldTemplates: {
            'header': {to: 'header'},
            'footer': {to: 'footer'}
        },
        waitOn : function () { 
            return Meteor.subscribe('questions');
        },
        before: function () {
            var id = this.params._id;
            var question = Questions.findOne({_id: id});
            console.log(question);
            Router.go('postShow', {_id: id, title: question.title});
        }
    });
});

我的publish.js文件中也有一些代码位于/server/目录

Meteor.publish('questions', function () { 
    return Questions.find({}); 
});

我不确定究竟出了什么问题。我以前做过这个,但是没有问题,但是,当我试图查找文档时,现在我一直未定义。顺便提一下,这个文档确实存在于我的数据库中。

1 个答案:

答案 0 :(得分:0)

所以你需要用Questions.findOne包裹你的if (this.ready() == true)。基本上它需要等待订阅准备好。