MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

NodeJS/Mongoose/MongoDB - Pull (dall'array) non funziona

Ho scoperto che anche il comando $pull non funziona per me a meno che non includa il callback nell'elenco degli argomenti.

Nella mia situazione, questo formato non ha funzionato:

UserAlerts.findOneAndUpdate({userId: userId}, {$pull: {alerts: {_id: alertId}}});

Ma questo formato ha fatto:

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

Secondo la documentazione, sembra che entrambi dovrebbero funzionare, ma non è così. Il motivo è perché il primo modo richiede di chiamare .exec() sull'oggetto restituito, mentre la versione di callback chiama exec() automaticamente. Ha causato un po' di confusione anche a me.

Quindi devi fare qualcosa del genere:

UserAlerts.findOneAndUpdate({userId: userId}, {$pull: {alerts: {_id: alertId}}}).exec();