sql >> Database >  >> NoSQL >> MongoDB

Mongoose VersionError:Geen overeenkomend document gevonden voor id wanneer document wordt opgeslagen

Hoewel het zou lijken op een .save() is hier de juiste aanpak, een .update() commando zou de klus klaren terwijl "race-omstandigheden" worden genegeerd die deze fout veroorzaken. Mongo DB geeft deze fout omdat het bezorgd is dat ik een oudere versie van het document opsla die al is bijgewerkt:

  1. v1 is verzonden naar klant
  2. v1 is opgeslagen en geüpdatet naar v2 in Mongo DB
  3. v1 probeert opnieuw te worden opgeslagen, maar Mongo DB heeft v2 al opgeslagen, er wordt een fout gegenereerd

Een betere benadering is om v1 naar de client te sturen en wanneer het winkelwagenobject verandert, synchroniseert u het object met het nieuwe winkelwagenobject, wat er ook gebeurt. Dit kan via .update() in plaats van via .save() .

Dit komt omdat .save() let op en geeft om versiebeheer, terwijl .update() zal het object bijwerken ongeacht versiebeheer.




  1. 'upsert' in een ingesloten document

  2. node-mongodb-native:Hoe kan ik het db api-object van de verbindingscallback delen via mijn applicatie

  3. Redis pub sub max abonnees en uitgevers

  4. Mongo DB-fout:ongeldige operator:$ zoeken bij het zoeken naar $ tekst