如何迭代光标并为每个文档添加字段?像这样的东西似乎不起作用:
function getNewItems() {
var items = Items.find();
items.forEach(function(item) {
item.newField = true;
});
return items;
}
Run Code Online (Sandbox Code Playgroud)
我想在将Iron Router的data功能发送到模板之前修改它们.
根据您的具体要求 -
如果要计算每个项目的值,仅用于显示目的(例如,在模板中使用的字段):
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包或设置集合的正确allow或deny规则Items.