2014-09-20 59 views
0

我是新來的流星框架,並且在模板之外訪問我的集合中的數據時遇到問題。
我有一個小的mongo集合,可以通過使用模板來檢索和呈現其數據而沒有問題。但是,當我嘗試讓遊標或數組更直接地使用時,我沒有返回任何結果。流星迴收沒有結果,除了在模板中

在我的劇本,用找到

var dataFind = Fakedata.find(); console.log(dataFind); console.log(dataFind.count());

給出了一個光標對象,但計數爲零。

var dataFetch = Fakedata.find().fetch(); console.log(dataFetch); console.log(dataFetch.length);

給出了一個空數組的長度爲零。

從JS控制檯使用相同的find()fetch()給我填充對象,因爲我期望上面的代碼。在流星模板中,一切看起來都很好,所以pub/sub似乎是正確的。

任何線索,我在做什麼錯在這裏?

回答

0

看起來您的訂閱不是ready在您嘗試訪問您的收藏數據時,這是一個常見的問題。

當您通過模板訪問您的收藏數據時,很可能是通過使用恰好是反應性的模板助手,因此當您的收藏品ready因此顯示正確的數據時,它們將重新運行。

雖然在非反應性腳本中訪問您的集合,但如果訂閱尚未ready,它們將顯示爲空。

您可以嘗試在你的腳本中使用此模式僅在訂閱準備好執行代碼:

Meteor.subscribe("mySubscription",function(){ 
    // we are inside the ready callback here so collection date is available 
    console.log(Fakedata.find().fetch()); 
}); 

如果你正在尋找一個更可靠的方法,嘗試尋找在iron:routerwaitOn機制。

+0

這似乎是問題所在。我會研究鐵路:路由器,看看它是如何工作的。謝謝。 – dhoellein 2014-09-21 20:17:18