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

NodeJS/Mongoose/MongoDB - Pull (vom Array) funktioniert nicht

Ich habe festgestellt, dass der $pull-Befehl bei mir auch nicht funktioniert, es sei denn, ich füge den Callback in die Argumentliste ein.

In meiner Situation hat dieses Format nicht funktioniert:

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

Aber dieses Format tat es:

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

Laut Dokumentation sollten beide funktionieren, tun es aber nicht. Der Grund dafür ist, dass Sie bei der ersten Methode .exec() für das zurückgegebene Objekt aufrufen müssen, während die Callback-Version automatisch exec() aufruft. Hat bei mir auch etwas Verwirrung gestiftet.

Sie müssen also etwa so vorgehen:

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