gpt4 book ai didi

node.js - Mongoose _id 在保存前受影响

转载 作者:可可西里 更新时间:2023-11-01 09:19:51 24 4
gpt4 key购买 nike

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 } 两次

我试过在超时后延迟保存,但它是一样的,它指向在 new Cat 而不是 .save()

这是因为mongodb还是mongoose,为什么在实际持久化之前设置了_id?

最佳答案

大多数 MongoDb 驱动程序会自动生成 ObjectId/_id 客户端,包括 Node.js 的 native 驱动程序。生成唯一 ID 时会发生少量锁定,因此没有理由不将生成分发给连接的客户端。

Mongoose 需要一个唯一标识符来跟踪和引用对象,因此它会立即创建一个标识符。

在 Node.JS 客户端中,您可以 optionally例如,将属性 forceServerObjectId 设置为 true 以控制此行为。

但是,根据 docs 使用 Mongoose 时,这不能被覆盖:

Mongoose forces the db option forceServerObjectId false and cannot be overridden. Mongoose defaults the server auto_reconnect options to true which can be overridden. See the node-mongodb-native driver instance for options that it understands.

关于node.js - Mongoose _id 在保存前受影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18761595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com