sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose:tilldela fält av typen "array of Strings"

Det är inte väldokumenterat, men när du manipulerar arrayfält måste du se till att du utlöser Mongooses fältändringsdetektering så att den vet att arrayen har modifierats och måste sparas.

Att direkt ställa in ett arrayelement via dess index inom hakparenteser markerar det inte som modifierat så du måste flagga det manuellt med markModified :

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

Eller så kan du göra det på en gång med set metod för Mongoose-arrayen:

user.emails.set(0, email1);

Att skriva över hela arrayfältet utlöser det också, varför detta fungerar för dig:

user.emails = [email1, email2];

samt:

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

Vilket betyder att detta också fungerar:

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



  1. Schemalägg Node.js-jobb var femte minut

  2. Azure-funktionen returnerar inte resultat

  3. mongodb kunde inte ansluta till servern

  4. Göra ett skript för att skapa MongoDB-samlingar från Mongo-skalet?