Meteor在服务器启动时填充集合

Meteor在服务器启动时填充集合,meteor,Meteor,服务器启动时,此代码需要在MenuItems集合中插入一些文档。但浏览器控制台显示它是空的[]。 我不知道这是什么意思,只是从另一个帖子上得到的 为什么以及如何修复它?谢谢 /////////////////////////// // both/both.js // /////////////////////////// MenuItems = new Mongo.Collection('menuItems'); /////////////////////////// //

服务器启动时,此代码需要在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发布吗?