Javascript Mongoose VersionError:保存文档时未找到id的匹配文档

Javascript Mongoose VersionError:保存文档时未找到id的匹配文档,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,通过“/sync/”API请求同步用户购物车时,我反复看到以下错误。每当用户更改其购物车的内容时,就会调用此函数 VersionError:找不到id的匹配文档 “2y4b1hq601cd013e0af25e32”版本4修改路径“购物车,购物车.物品, cart.updatedAt“ 位于VersionError.MongooseError[作为构造函数](/node_modules/mongoose/lib/error/MongooseError.js:13:11) 在新版本错误(/node_

通过“/sync/”API请求同步用户购物车时,我反复看到以下错误。每当用户更改其购物车的内容时,就会调用此函数

VersionError:找不到id的匹配文档 “2y4b1hq601cd013e0af25e32”版本4修改路径“购物车,购物车.物品, cart.updatedAt“ 位于VersionError.MongooseError[作为构造函数](/node_modules/mongoose/lib/error/MongooseError.js:13:11) 在新版本错误(/node_modules/mongoose/lib/error/version.js:18:17) 生成时出错(/node_modules/mongoose/lib/model.js:398:10) 在model.model.save(/node_modules/mongoose/lib/model.js:460:27) at/controllers/shoppingCart/index.js:48:14 at/node_modules/mongoose/lib/model.js:4670:16 at/node_modules/mongoose/lib/utils.js:258:16 在_hooks.execPost(/node\u modules/mongoose/lib/query.js:4065:11) at/node_modules/kareem/index.js:135:16 在进程中。_tick回调(内部/process/next_tick.js:61:11)

具体代码行如下所示:

req.session.save();
delete user.__v;
>>      user.save();
return res.send();

我尝试过user.increment(),但这似乎无法解决此问题,也无法删除用户。\v我假设这是冲突的版本,并且我希望对我的用户对象进行版本控制,我只需要强制购物车始终同步到最新版本。

虽然它看起来是一个。save()是正确的方法,一个.update()命令将在忽略导致此错误发生的“竞争条件”的情况下完成作业。Mongo DB抛出此错误,因为它担心我正在保存已更新文档的旧版本:

  • v1被发送到客户端
  • v1已保存,并在Mongo DB中更新为v2
  • v1正试图再次保存,但Mongo DB已存储v2,将引发错误
  • 更好的方法是将v1发送到客户端,当cart对象发生更改时,不管发生什么情况,都要将该对象与新的cart对象同步。这可以通过.update()而不是通过.save()完成


    这是因为.save()监视并关心版本控制,而.update()将更新对象,而不管版本控制如何。

    ty million次:D