У меня есть странная проблема, которая меня озадачивает. У меня есть модель:
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, которое запускается правильно, чтобы оно сохранялось. У меня также нет никакой проверки структуры вариаций - т.е. Нет кода, который разрешает только код и цену. Я, очевидно, что-то пропустил, но через пару часов у меня кончились идеи.