Mentre sembrerebbe un .save() è l'approccio giusto qui, un .update() comando eseguirebbe il lavoro ignorando le "condizioni di gara" che causano il verificarsi di questo errore. Mongo DB sta generando questo errore perché è preoccupato che sto salvando una versione precedente del documento che è già stata aggiornata:
- v1 viene inviato al cliente
- La v1 viene salvata e aggiornata alla v2 in Mongo DB
- v1 sta tentando di essere salvato di nuovo, ma Mongo DB ha già memorizzato v2, viene generato un errore
Un approccio migliore consiste nell'inviare la v1 al client e, quando l'oggetto carrello cambia, sincronizzare l'oggetto con il nuovo oggetto carrello, qualunque cosa accada. Questo può essere fatto tramite .update() anziché tramite .save() .
Questo perché .save() controlla e si preoccupa dei controlli di versione, mentre .update() aggiornerà l'oggetto indipendentemente dal controllo della versione.