mongoose .save()忽略ObjectId _id

时间:2016-07-05 04:23:41

标签: node.js mongodb mongoose

我有一个mongoose架构集 A 。然后,我创建一个新对象,如下所示

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

只要我知道,一旦完成此操作,就会为该对象创建一个新的 _id 属性。这意味着在一天结束时, myA 应该看起来(实际上看起来像)

{
    name: 'A simple name',
    _id: ObjectId
}
问题是,当我点击

myA.save()

它被保存到mongodb中,其中 _id 与之前创建的不同。

关于为什么会发生这种情况的想法?我使用的是mongoose 4.4.8

1 个答案:

答案 0 :(得分:0)

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

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