Meteor在服务器启动时填充集合
服务器启动时,此代码需要在MenuItems集合中插入一些文档。但浏览器控制台显示它是空的[]。Meteor在服务器启动时填充集合,meteor,Meteor,服务器启动时,此代码需要在MenuItems集合中插入一些文档。但浏览器控制台显示它是空的[]。 我不知道这是什么意思,只是从另一个帖子上得到的 为什么以及如何修复它?谢谢 /////////////////////////// // both/both.js // /////////////////////////// MenuItems = new Mongo.Collection('menuItems'); /////////////////////////// //
我不知道这是什么意思,只是从另一个帖子上得到的 为什么以及如何修复它?谢谢
///////////////////////////
// both/both.js //
///////////////////////////
MenuItems = new Mongo.Collection('menuItems');
///////////////////////////
// server/server.js //
///////////////////////////
Meteor.publish('menuItems', function(){
return MenuItems.find();
});
Meteor.startup(function () {
var items =
[
{menuItem: "task1", login: false},
{menuItem: "task2", login: true},
{menuItem: "task3", login: true},
{menuItem: "task4", login: true},
{menuItem: "task5", login: true},
{menuItem: "task6", login: true},
{menuItem: "task7", login: false},
{menuItem: "task8", login: false},
{menuItem: "task9", login: false},
{menuItem: "login", login: false},
{menuItem: "logout", login: false}
]
_.each(items, function (doc) {
MenuItems.insert(doc);
})
});
///////////////////////////
// client/client.js //
///////////////////////////
Template.mainMenu.helpers({
menuItems: function () {
return MenuItems.find();
}
});
如果删除了client/client.js文件中的
autopublish
包,则需要订阅menuItems
publication
///////////////////////////
// client/client.js //
///////////////////////////
Template.mainMenu.onCreated(function () {
var template = this;
template.handler = template.subscribe('menuItems');
});
Template.mainMenu.helpers({
menuItems: function () {
return MenuItems.find();
}
});
Template.mainMenu.onDestroyed(function () {
var template = this;
if (template.handler && template.handler.stop) template.handler.stop();
});
p.S:迭代数组并调用函数,即元素中每个项的函数,该项作为参数传递给函数。您订阅了menuItems发布吗?