MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongoose:Feld vom Typ 'Array of Strings' zuweisen

Es ist nicht gut dokumentiert, aber wenn Sie Array-Felder manipulieren, müssen Sie sicherstellen, dass Sie Mongooses Feldänderungserkennung auslösen, damit es weiß, dass das Array geändert wurde und gespeichert werden muss.

Das direkte Setzen eines Array-Elements über seinen Index in eckige Klammern markiert es nicht als geändert, sodass Sie es manuell mit markModified :

user.emails[0] = email1;
user.markModified('emails');

Oder Sie können es auf einmal tun, indem Sie das set verwenden Methode des Mongoose-Arrays:

user.emails.set(0, email1);

Das Überschreiben des gesamten Array-Felds löst es auch aus, weshalb dies für Sie funktioniert:

user.emails = [email1, email2];

sowie:

user.emails = [email1];
user.emails[1] = email2;

Das heißt, das funktioniert auch:

user.emails = [];
user.emails[0] = email1;
user.emails[1] = email2;