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

时间:2015-10-16 20:24:18

标签: node.js mongodb mongoose

数据库设计决策在这里和那里没有别的方法可以做到这一点,但在SO上对专家进行了调查。

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

我们使用的是自动增量器,它为每个模型提供整数ID。我们想将此字段称为“id”,它将补充“_id”字段。

我担心的是,使用'id'字段会产生问题。是否有人在所有Mongoose模型上使用'id'作为整数id的经验是积极的还是消极的?

1 个答案:

答案 0 :(得分:1)

是的,要非常小心。默认情况下,Mongoose会向您的模型添加一个名为"id"的虚拟属性。此虚拟属性将强制转换返回到_id属性的String。

如果您确实要在模型中添加不动产"id",则必须使用{id: false}来电中的new Schema()选项关闭此自动虚拟广告:

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

请注意,即使这样可能会让每个知道猫鼬的开发人员在阅读代码时感到困惑。

也许最好用不同的方式打电话给你的财产。

或者当你创建这个递增id作为你的主键时,也许你可以直接将它分配给_id,因为那时可能无需生成额外的ObjectId ...然后id属性会自动返回你的整数一个字符串。