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

NodeJS/Mongoose/MongoDB - Pull (do array) não está funcionando


Descobri que o comando $pull também não funciona para mim, a menos que eu inclua o retorno de chamada na lista de argumentos.

Na minha situação, este formato não funcionou:
UserAlerts.findOneAndUpdate({userId: userId}, {$pull: {alerts: {_id: alertId}}});

Mas este formato fez:
UserAlerts.findOneAndUpdate({userId: userId}, {$pull: {alerts: {_id: alertId}}}, function(err, data){
  console.log(err, data);
});

De acordo com a documentação, parece que ambos devem funcionar, mas não funcionam. A razão é porque a primeira maneira requer que você chame .exec() no objeto retornado, enquanto a versão de retorno de chamada chama exec() automaticamente. Causou alguma confusão para mim também.

Então você precisa fazer algo assim:
UserAlerts.findOneAndUpdate({userId: userId}, {$pull: {alerts: {_id: alertId}}}).exec();