Meteor Mongo onRendered .count()错误地返回值

时间:2017-06-15 02:18:49

标签: meteor meteor-blaze

在Meteor中,我试图在onRendered模板函数中设置会话变量。具体来说,我想使用Meteor.users.find({}).count()计算从MongoDB集合返回的文档数,并将其存储在会话变量中:

admin.js

Template.admin.helpers({
    users() {
        var skip = Session.get('adminUserListPageCurrent');
        return Meteor.users.find({}, {limit: 1, skip: skip});
    },
    pages() {
        return Meteor.users.find({}).count();
    }
});

Template.admin.onRendered(function () {
    var users = Meteor.users.find({}).count();
    Session.set('adminUserNumberOfPages', users);
});

总共有三个用户帐户;但是,它在onRendered模板函数中返回零值。相反,它正确返回模板助手中的值。

1 个答案:

答案 0 :(得分:3)

您需要等到客户端上的meteor.Users集合中的数据可用。当客户端收到数据(以及将来的更新)时,此代码使用Reading and Writing files - Python tutorial更新您的Session变量。如果您希望在启动时只运行一次,则可以尝试使用autorun

Template.admin.onRendered(function () {
  console.log('Initially in onRendered: ', Meteor.users.find({}).count());

  this.autorun(() => {
    var users = Meteor.users.find({}).count();
    Session.set('adminUserNumberOfPages', users);
    console.log('In autorun: ', Meteor.users.find({}).count());
  });

});