MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongoose VersionError :Aucun document correspondant trouvé pour l'identifiant lors de l'enregistrement du document

Alors qu'il apparaîtrait un .save() est la bonne approche ici, un .update() commande ferait le travail tout en ignorant les "conditions de concurrence" qui provoquent cette erreur. Mongo DB génère cette erreur car il craint que j'enregistre une ancienne version du document qui a déjà été mise à jour :

  1. v1 est envoyé au client
  2. la v1 est enregistrée et mise à jour vers la v2 dans Mongo DB
  3. v1 essaie à nouveau d'être enregistré, mais Mongo DB a déjà stocké v2, une erreur est générée

Une meilleure approche consiste à envoyer v1 au client et lorsque l'objet panier change, synchroniser l'objet avec le nouvel objet panier quoi qu'il arrive. Cela peut être fait via .update() plutôt que via .save() .

C'est parce que .save() surveille et se soucie des contrôles de version, tandis que .update() mettra à jour l'objet indépendamment du contrôle de version.