向流星光标添加字段

jac*_*ndc 3 javascript meteor

如何迭代光标并为每个文档添加字段?像这样的东西似乎不起作用:

function getNewItems() {
    var items = Items.find();
    items.forEach(function(item) {
        item.newField = true;
    });
    return items;
}
Run Code Online (Sandbox Code Playgroud)

我想在将Iron Router的data功能发送到模板之前修改它们.

nat*_*n-m 9

根据您的具体要求 -

如果要计算每个项目的值,仅用于显示目的(例如,在模板中使用的字段):

Items.find({ /* selector */ }, {
   transform: function(item){
      item.newField = true;
      return item;
    }
}); 
Run Code Online (Sandbox Code Playgroud)

但是,如果您想使用不同的值(在mongodb中)更新每个文档,请使用Meteor api:

var items = Items.find({ /* selector */});
items.forEach(function(item){
   var someValue = computeSomeValue(item);
   Items.update({
     _id: item._id
   }, {
      $set: {
         newField: someValue
      }
   });
 });
Run Code Online (Sandbox Code Playgroud)

否则,如果您只想使用SAME值更新每个匹配项:

Items.update({ /* selector */}, {
  $set: {
    newField: true
    },
  },
  { 
    multi: true
  }
);
Run Code Online (Sandbox Code Playgroud)

如果你在Meteor中做这个客户端 - 你的成功(在最后两个选项上)也将取决于使用insecure包或设置集合的正确allowdeny规则Items.