如何在 Meteor js 的路由操作中使用 Collection.find()

how to use Collection.find() inside route action of Meteor js

我有一段代码;

Router.configure({
    layoutTemplate: 'master_layout'
});


Router.map(function(){

    this.route('generatePDF', {
    path: '/pdf',
    where: 'server',
    action: function() {

        console.log(voters.findOne().fetch());
        var voters = voters.find();

    ....
    }
});

如何在路由的 action 中使用任何给定的集合。

我得到如下错误;

W20160510-20:19:29.909(5.5)? (STDERR) TypeError: Cannot call method 'findOne' of undefined
W20160510-20:19:29.910(5.5)? (STDERR)     at [object Object].action (lib/routes.js:40:29)
W20160510-20:19:29.910(5.5)? (STDERR)     at boundNext (packages/iron_middleware-stack/lib/middleware_stack.js:251:1)

您的代码中有多个错误。

首先,votersconsole.log 行中的 undefined(如您的错误日志所述)。 其次,Voters.findOne() returns 单个文档(假设您有一个名为 Voters 的集合)。您不能在文档上调用 fetch。 您可以在光标上调用 fetch。例如,Voters.find().fetch() 就可以了。

希望对您有所帮助

试试这个:

action: function () {
    this.render('someTemplate',{
        data: function(){
            return Voters.find()
        }
    });
}