我有一个奇怪的问题,让我感到困惑。我有一个模型:
var Model = new Schema({
name: String,
variations: Array
});
变体入口看起来像这样:
[ {code: '', price: '' }, {code: '', price: '' }]
我需要添加一个新字段,比如“颜色”。所以我正在进行批量更新:
我需要添加一个新字段,比如“颜色”。所以我正在进行批量更新:
Model.find().exec(function(err, products) {
if (!err) {
products.forEach(function(p) {
for(var i = p.variations.length - 1; i >= 0; i--) {
p.variations[i]['color'] = 'red';
// This shows all existing variations
// with the new color feed - correct
console.log(p.variations[i]);
}
p.save(function(err) {
if (!err) {
console.log("Success");
} else {
console.log(err);
}
});
});
}
});
然而,“color”字段未设置——如果我再次通过并注释掉
p.variations[i]['color'] = 'red';
这一行,那么它就不会显示。我似乎无法弄清楚为什么会这样。我有一个正确触发保存的onSave事件。我还没有对变量结构进行任何检查——即没有只允许代码和价格的代码。显然我错过了什么,但几个小时后我已经没有想法了。