У меня есть коллекция в моем Метеор JS приложения:Метеор JS: Сроки доступа к MongoDB влияет на результат доступа
MenuItems = new Mongo.Collection('menu_items');
В моем файле шаблона Helper я получить доступ к этой коллекции:
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}}
Тогда в моем шаблоне оказывается помощник обратного вызова себе фикция я снова получить доступ к этой коллекции:
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 уже есть документы внутри? ???
Это потому, что мой шаблон и шаблон вспомогательные файлы глубже в иерархии файлов и поэтому загружается раньше, чем мой menu_item.js файл, который создает переменную MenuItems
по:
MenuItems = new Mongo.Collection('menu_items');
Как убедиться, что MongoDB вернет правильное количество документов с самого первоначального вызова или доступа к нему?
Большое спасибо