2016-11-22 116 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