Het is niet goed gedocumenteerd, maar bij het manipuleren van arrayvelden moet je ervoor zorgen dat je de veldveranderingsdetectie van Mongoose activeert, zodat het weet dat de array is gewijzigd en moet worden opgeslagen.
Het rechtstreeks instellen van een array-element via de index tussen vierkante haken markeert het niet als gewijzigd, dus u moet het handmatig markeren met markModified
:
user.emails[0] = email1;
user.markModified('emails');
Of je kunt het in één keer doen, met behulp van de set
methode van de Mongoose-array:
user.emails.set(0, email1);
Het overschrijven van het hele arrayveld activeert het ook en daarom werkt dit voor jou:
user.emails = [email1, email2];
evenals:
user.emails = [email1];
user.emails[1] = email2;
Wat betekent dat dit ook werkt:
user.emails = [];
user.emails[0] = email1;
user.emails[1] = email2;