Ini tidak didokumentasikan dengan baik, tetapi ketika memanipulasi bidang larik, Anda perlu memastikan bahwa Anda memicu deteksi perubahan bidang Mongoose sehingga ia tahu bahwa larik telah dimodifikasi dan perlu disimpan.
Menyetel elemen array secara langsung melalui indeksnya dalam tanda kurung siku tidak menandainya dimodifikasi sehingga Anda harus menandainya secara manual menggunakan markModified
:
user.emails[0] = email1;
user.markModified('emails');
Atau Anda dapat melakukannya sekaligus, menggunakan set
metode array Mongoose:
user.emails.set(0, email1);
Menimpa seluruh bidang array juga memicunya, itulah sebabnya ini bekerja untuk Anda:
user.emails = [email1, email2];
serta:
user.emails = [email1];
user.emails[1] = email2;
Yang berarti ini juga berfungsi:
user.emails = [];
user.emails[0] = email1;
user.emails[1] = email2;