我在Meteor项目中的client/main.js
文件
Template.panel.onCreated(function loginOnCreated() {
var profile = Session.get('profile');
this.myvar = new ReactiveVar(User.find({}).fetch());
});
User.find({})
的结果为空。如果我在其他任何地方查询(包括meteor mongo
),我会得到一个用户数组。
所以我想知道这个代码是在客户端运行这个问题是否存在问题。在同一个文件中,我将此查询在其他地方工作,但可能在服务器上下文中。
如果加载模板/页面后,如何使用Mongo结果填充此ReactiveVar
?
如果我在服务器端执行类似Meteor.startup()
的操作:
console.log(User.find({}).count());
它为我提供了正确数量的用户。立即
@edit
如果我只添加一个setTimeout
几秒钟(它不能是1秒钟,它需要一个longet时间),它可以在同一个地方工作。
Template.panel.onCreated(function loginOnCreated() {
//...
setTimeout(function(){
template.timeline.set(User.find({}).fetch());
console.log(timeline)
},3000);
});
所以,有人知道为什么要让我做这个操作需要这么长时间?任何解决方法?
答案 0 :(得分:0)
User.find({})。fetch()将仅提供服务器端的用户列表。
您可以编写一个meteor方法来获取服务器端的用户列表,并使用meteor.call进行调用。
在此调用的回调函数中,您可以将结果分配给所需的变量。