Mongoose模型使用id属性的危险?

数据库devise决策在这里,没有其他的方式来做到这一点,但在SO上投票专家。

我们正在使用Mongoose ODM和Node.js Express。 MongoDB使用_id作为保存每个文档唯一的ObjectID的模型的默认属性。

我们正在使用一个自动增量,它给每个模型的整数ID。 我们要调用这个字段'id',这将补充'_id'字段。

我担心的是,使用'id'字段会带来问题的风险很小。 有没有人有经验积极或消极的使用“id”整数ids所有他们的mongoose模型?

是的,要非常小心。 Mongoose默认添加一个名为"id"的虚拟属性到你的模型中。 此虚拟属性将强制转换为_id属性的String。

如果你真的想添加一个真实的属性"id"到你的模型中,你必须使用new Schema()调用中的选项{id: false}来closures这个自动虚拟:

 new Schema({name: String, id: int}, {id: false}) 

要知道,即使这样做可能会让每个知道mongoose的开发人员在阅读代码时都感到困惑。

也许更好地调用你的财产不同。

或者,当你创build这个递增的ID作为主键,也许你可以直接把它分配给_id,因为那么可能不需要生成额外的ObjectId,然后id属性会自动返回你的整数作为一个string。