MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mangusto:atribuir campo do tipo 'array of Strings'


Não está bem documentado, mas ao manipular campos de array você precisa ter certeza de que está acionando a detecção de alteração de campo do Mongoose para que ele saiba que o array foi modificado e precisa ser salvo.

Definir diretamente um elemento de matriz por meio de seu índice entre colchetes não o marca como modificado, portanto, você deve sinalizar manualmente usando markModified :
user.emails[0] = email1;
user.markModified('emails');

Ou você pode fazer isso de uma só vez, usando o set método da matriz Mongoose:
user.emails.set(0, email1);

A substituição de todo o campo da matriz também o aciona e é por isso que isso funciona para você:
user.emails = [email1, email2];

assim como:
user.emails = [email1];
user.emails[1] = email2;

O que significa que isso também funciona:
user.emails = [];
user.emails[0] = email1;
user.emails[1] = email2;