【问题标题】:Mongoose didn't automatic inscrease __vMongoose 没有自动增加 __v
【发布时间】:2021-10-06 16:13:22
【问题描述】:

我不知道为什么每次调用 .save() 方法时 mongoose 没有自动增加 __v

我尝试启用猫鼬的调试模式并在保存行之前和之后记录记录。但是 __v 没有改变。我还看到没有 $inc 运算符的猫鼬调用 devices.updateOne()

例子:

const device = await device({ _id: '5fb3855c241cef097083803d' });

device.name = 'New Name';
device.updatedAt = new Date();

// try to log __v before update
console.log(device.__v); // --> 1
const result = await device.save();
// try to log __v after update
console.log(result.__v); // --> 1

这里是登录终端

1
Mongoose: devices.updateOne({ _id: ObjectId("5fb3855c241cef097083803d") }, { '$set': { name: 'New Name', updatedAt: new Date("Wed, 06 Oct 2021 06:38:34 GMT") }}, { session: null })
1

MongoDb 版本:5.0.2 猫鼬版:^5.9.20

【问题讨论】:

    标签: mongodb mongoose


    【解决方案1】:

    我发现了问题。如果您以可能不兼容的方式修改数组,Mongoose 的默认版本控制方案只会检查文档的版本。所以我只更新名称,一个字符串字段,所以 __v 不会改变,因为如果你不修改任何数组,它永远不会抛出 VersionError。

    设置optimisticConcurrency: true如果你想增加__v甚至改变一个字符串字段

    【讨论】:

      猜你喜欢
      • 2012-12-14
      • 2012-11-21
      • 2014-09-12
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 2013-01-05
      相关资源
      最近更新 更多