这里的数据库设计决策--没有其他方法可以做到--只是对专家进行调查。
我们使用的是带有Node.js快递的猫鼬ODM。MongoDB在包含每个文档唯一对象_id的模型上使用_id作为默认属性。
我们使用的是一个自动增量器,它为每个模型提供整数ids。我们想把这个字段称为'id‘,这将补充'_id’字段。
我担心的是,使用“id”字段会引起问题的风险很小。有没有人在他们所有的猫鼬模型中使用“id”作为整数id时有过正或负的经验?
发布于 2015-10-16 21:03:03
是的,小心点。默认情况下,猫鼬会向模型中添加一个名为"id"的虚拟属性。此虚拟属性将强制转换返回到_id属性的字符串。
如果您真的想向模型中添加一个真实属性"id",您必须使用new Schema()调用中的选项:{id: false}关闭这个自动虚拟:
new Schema({name: String, id: int}, {id: false})请注意,即使这是可能的,当每个开发人员通过这样做阅读您的代码时,他也会混淆熟悉猫鼬的开发人员。
也许最好以不同的方式称呼你的财产。
或者当您创建这个增量id作为您的主键时,也许您可以将它直接分配给_id,因为这样可能就不需要生成额外的ObjectId了.然后id属性将自动将整数作为字符串返回。
https://stackoverflow.com/questions/33178977
复制相似问题