在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模板函数中返回零值。相反,它正确返回模板助手中的值。
答案 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());
});
});