Embora pareça um .save() é a abordagem correta aqui, um .update() comando faria o trabalho enquanto ignorava as "condições de corrida" que causam esse erro. O Mongo DB está lançando este erro porque está preocupado que eu esteja salvando uma versão mais antiga do documento que já foi atualizado:
- v1 é enviado ao cliente
- v1 é salvo e atualizado para v2 no Mongo DB
- A v1 está tentando ser salva novamente, mas o Mongo DB já tem a v2 armazenada, o erro é gerado
Uma abordagem melhor é enviar v1 para o cliente e, quando o objeto do carrinho mudar, sincronize o objeto com o novo objeto do carrinho, não importa o que aconteça. Isso pode ser feito via .update() em vez de .save() .
Isso ocorre porque .save() observa e se preocupa com os controles de versão, enquanto .update() atualizará o objeto independentemente do controle de versão.