我有一個奇怪的問題,讓我感到困惑。我有一個模型:無法更新貓鼬模型
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);
}
});
});
}
});
但「顏色」字段設置 - 如果我再重複一次,並註釋掉p.variations[i]['color'] = 'red';
線則不會顯示。我似乎無法弄清楚爲什麼這樣做。我有一個正確觸發的onSave事件,所以它正在保存。我也沒有檢查變體結構 - 即沒有代碼只允許代碼和價格。我明顯錯過了一些東西,但幾個小時後,我用完了想法。
如果您使用鬆散類型模式的任何深度對象(mongoose.Schema.Types.Mixed),則也是如此。而從Mongoose 4.5.8開始,上述方法(markModified)仍然是一個可行的方法。 – SylonZero 2017-11-18 21:09:30