我有一个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
答案 0 :(得分:0)
我想当你使用new A({...
创建一个新文档时,它在内部将自己标记为新文档,稍后在调用save()
生成适当的MongoDB语句时进行评估 - 这个'标记'可能不是在致电save()
时立即更新。当您想要生成测试数据时,这具有可以快速创建文档克隆的积极副作用:)
如果您想在创建后立即更新新保存的文档,那么您应该在save方法的回调中执行此操作,该方法将保存的文档放在其第二个参数中。