Während es ein .save() erscheinen würde ist hier der richtige Ansatz, ein .update() Der Befehl würde die Arbeit erledigen, während "Wettlaufbedingungen" ignoriert werden, die diesen Fehler verursachen. Mongo DB gibt diesen Fehler aus, weil es befürchtet, dass ich eine ältere Version des Dokuments speichere, die bereits aktualisiert wurde:
- v1 wird an den Client gesendet
- v1 wird gespeichert und in Mongo DB auf v2 aktualisiert
- v1 versucht erneut zu speichern, aber Mongo DB hat v2 bereits gespeichert, Fehler wird ausgegeben
Ein besserer Ansatz besteht darin, v1 an den Client zu senden und, wenn sich das Warenkorbobjekt ändert, das Objekt mit dem neuen Warenkorbobjekt zu synchronisieren, egal was passiert. Dies kann über .update() erfolgen statt über .save() .
Das liegt daran, dass .save() überwacht und kümmert sich um Versionskontrollen, während .update() aktualisiert das Objekt unabhängig von der Versionskontrolle.