sql >> Databáze >  >> NoSQL >> MongoDB

NodeJS/Mongoose/MongoDB - Pull (z pole) nefunguje

Zjistil jsem, že ani příkaz $pull mi nefunguje, pokud zpětné volání nezahrnu do seznamu argumentů.

V mé situaci tento formát nefungoval:

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

Ale tento formát ano:

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

Podle dokumentace se zdá, že by obojí mělo fungovat, ale ne. Důvodem je, že první způsob vyžaduje volání .exec() na vráceném objektu, zatímco verze se zpětným voláním volá exec() automaticky. Také mi to způsobilo zmatek.

Takže musíte udělat něco takového:

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



  1. Vlastní příkazy Redis

  2. Chyba syntaxe Neočekávaný token NELEGÁLNÍ Mongo Console

  3. Lumen a MongoDB?

  4. docker-compose wait-for.sh selže pro čekání mongodb