Въпреки че ще изглежда .save() е правилният подход тук, .update() командата ще свърши работата, като същевременно игнорира „състезателните условия“, които причиняват възникването на тази грешка. Mongo DB извежда тази грешка, защото се притеснява, че запазвам по-стара версия на документа, който вече е актуализиран:
- v1 се изпраща на клиента
- v1 е запазена и актуализирана до v2 в Mongo DB
- v1 се опитва да бъде запазен отново, но Mongo DB вече има съхранена v2, извежда се грешка
По-добър подход е да изпратите v1 на клиента и когато обектът cart се промени, да синхронизирате обекта с новия обект cart независимо от всичко. Това може да стане чрез .update() вместо чрез .save() .
Това е така, защото .save() наблюдава и се грижи за контролите на версиите, докато .update() ще актуализира обекта независимо от контрола на версиите.