Я использую массив строк для сохранения сообщений электронной почты:Mongoose: присвоить поле типа «массив строки»
var user = new Schema({
// other fields...
emails: [String]
});
Есть проблемы с обновлением этого поля. Скажем, EMAIL1 и email2 ценности, я получаю с точки зрения:
Это хорошо работает:
user.emails = [email1, email2];
user.save();
// fields are updated, all good
И это не делает:
user.emails[0] = email1;
user.emails[1] = email2;
user.save(function(err, savedUser) {
console.log(savedUser.emails); // updated array [email1, email2]
// but if I retrieve now the user, the 'emails' field will not have above changes.
});
Но, как ни странно, это работает:
user.emails = [email1];
user.emails[1] = email2;
user.save();
// user.emails == [email1, email2];
Может кто-нибудь объяснить, почему это происходит?
Большое спасибо !!! Знаете ли вы, как он мог работать в моих тестах без запуска обнаружения изменения поля? – eagor
@eagor Какой случай неожиданно работает в ваших тестах? – JohnnyHK
элементы настройки индивидуально (user.emails [0] = email1 ...). Не имел никакого эффекта в среде «dev», но хорошо работал в «тесте» (обновлен массив вновь восстановленного объекта) – eagor