var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var Cat = mongoose.model('Cat', { name: String });
var kitty = new Cat({ name: 'Zildjian' });
console.log(kitty);
kitty.save();
console.log(kitty);
这个输出:
{ name: 'Zildjian', _id: 523194d562b0455801000001 }
twice
我尝试过在超时后延迟保存,但它是相同的,它指向在new Cat
而不是.save()
这是因为mongodb还是mongoose的原因,为什么在实际持久化之前设置_id?
大多数 MongoDb 驱动程序会自动生成 ObjectId/_id
客户端,包括 Node.js 的本机驱动程序。生成唯一 ID 时需要进行少量锁定,因此没有理由不将生成的 ID 分发给连接的客户端。
Mongoose 需要一个唯一的标识符来跟踪和引用对象,因此它会立即创建一个标识符。
在 Node.JS 客户端中,您可以可选地 http://mongodb.github.io/node-mongodb-native/api-generated/db.html例如设置属性forceServerObjectId
to true
来控制这种行为。
然而,当使用 Mongoose 时,这不能被覆盖docs http://mongoosejs.com/docs/api.html:
Mongoose 强制 db 选项forceServerObjectId false 并且不能
被覆盖。 Mongoose 默认服务器 auto_reconnect 选项为
true 可以被覆盖。请参阅node-mongodb-native 驱动程序
例如它理解的选项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)