我在流星JS的應用程序有一個集合:流星JS:訪問MongoDB的時序影響了訪問的結果
MenuItems = new Mongo.Collection('menu_items');
在我的模板助手文件我訪問這個集合:
Template.admin_menu_items.helpers({
menuItems: function(){
//return items from DB
console.log('inside menuItems');
snapshot = MenuItems.find().fetch();
console.log(snapshot);
return snapshot;
},
});
然後在我的html模板文件中,我稱這個幫手:
{{#each menuItems}}
{{#each items}}
{{this}}
{{/each}}
{{/each}}
然後在我的模板呈現的助手回調se ction我再次訪問該集合:
Template.admin_menu_items.rendered = function(){
console.log('Template.admin_menu_items.rendered');
var snapshotRendered = MenuItems.find().fetch();
//
console.log(snapshotRendered);
}
如果我刷新頁面,我得到了以下的輸出:
inside menuItems admin_m...4d3e6ec (line 9)
[] admin_m...4d3e6ec (line 13)
Template.admin_menu_items.rendered admin_m...4d3e6ec (line 36)
[] admin_m...4d3e6ec (line 40)
inside menuItems admin_m...4d3e6ec (line 9)
[Object { _id="nHZBfwAt64dwiPjCB", items=[3]}]
我想明白,問的是:爲什麼是它第一次調用到MenuItems.find().fetch()
裏面的menuItems幫手和第一次調用MenuItems.find().fetch()
裏面的模板呈現回調函數返回一個空的[]
數組,當MenuItems集合裏面已經有文檔時???
是不是因爲我的模板和模板幫助文件是在文件的層次更深,因此早於通過實例化MenuItems
可變我menu_item.js文件加載:
MenuItems = new Mongo.Collection('menu_items');
如何保證MongoDB將從最初的調用或訪問完成後返回正確數量的文檔?
非常感謝您