私は私を困惑させている奇妙な問題を抱えています。私はモデルを持っています:
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イベントがあるので、保存しています。また、バリエーションの構造についてもチェックしていません。つまり、コードと価格のみを許可するコードはありません。私は明らかに何かが欠けていますが、数時間後に私はアイデアを使い果たしました。