2016-11-22 145 views
0

我在流星的项目获得此代码Template.foo.onCreate空数组,在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()在服务器端:

​​

它给我的用户数目正确。立即。

@edit

如果我只加几秒钟setTimeout(不能仅仅指刚1秒,它需要一个longet时间),它工作在这个非常相同的地方。

Template.panel.onCreated(function loginOnCreated() { 
//... 
setTimeout(function(){ 
    template.timeline.set(User.find({}).fetch()); 
    console.log(timeline) 
    },3000); 
}); 

所以,任何人都知道为什么需要这么长时间才能做这个操作?任何解决方法?

回答

0

User.find({})。fetch()只会在服务器端提供用户列表。

你也许可以编写一个meteor方法来获取服务器端的用户列表,并使用meteor.call给它打电话。

在此调用的回调函数中,您可以将结果分配给所需的变量。

+0

什么方法?像Method.methods一样?我如何在服务器端创建一个方法,如果从客户端调用? –

+0

此链接将有助于方法调用details.https://guide.meteor.com/methods.html – Shivani

+0

或简单地在server.js启动代码后结束您可以创建简单的方法 - – Shivani