私は私を困惑させる奇妙な問題があります。 - 「色」と言う私は、新しいフィールドを追加する必要がマングースモデルを更新できません
[ {code: '', price: '' }, {code: '', price: '' }]
:
var Model = new Schema({
name: String,
variations: Array
});
バリエーションエントリ次のようになります。私は、モデルを持っています。だから私は、バッチ更新にこれをやっている:
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