【问题标题】:mongoose .save() ignores ObjectId _id猫鼬 .save() 忽略 ObjectId _id
【发布时间】:2016-11-06 19:14:02
【问题描述】:

我有一个猫鼬模式集合A。然后,我创建一个新对象如下

var myA = new A({
    name: 'A simple name'
});

据我所知,一旦我们这样做了,就会为该对象创建一个新的 _id 属性。这意味着在一天结束时,myA 应该看起来(实际上看起来)像

{
    name: 'A simple name',
    _id: ObjectId
}

问题是当我击中时

myA.save()

它以不同于之前创建的 _id 保存到 mongodb 中。

关于为什么会发生这种情况的想法?我正在使用猫鼬 4.4.8

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    我猜当您使用new A({... 创建一个新文档时,它会在内部将自己标记为新文档,稍后在调用save() 以生成适当的 MongoDB 语句时对其进行评估-并且此“标志”在调用时可能不会立即更新save()。这具有积极的副作用,当您想要生成测试数据时,可以快速创建文档克隆:)

    如果您想在创建后立即更新新保存的文档,那么您应该在 save 方法的回调中执行此操作,该方法在其第二个参数中获取保存的文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      • 2013-11-27
      • 2017-04-06
      • 2013-06-19
      • 2016-11-12
      • 2017-03-28
      • 2020-07-25
      相关资源
      最近更新 更多