【发布时间】:2012-07-03 07:28:12
【问题描述】:
关于mongoose中mongo ObjectId的一些问题
1) ObjectId 字段可以不是命名为 _id 吗?以及如何做到这一点?当我在我的代码中这样做时:
MySchema = new mongoose.Schema({
id : mongoose.Schema.ObjectId
});
没有任何改变。
2) 如果我有一个名为 _id 的 objectId 字段,是否可以从请求中返回该字段的另一个名称(例如只是“id” - 在网络响应中发送它);
3) 还有一个问题只是为了理解:为什么 ObjectId _id 字段不能通过“id”属性访问,而不是“_id”?
谢谢,亚历克斯
【问题讨论】:
-
请参阅此问题以了解您所问的一方面:stackoverflow.com/q/10363513/1259510
-
谢谢,但似乎虚拟属性并没有解决问题,当我使用 .find 方法时,id 不会返回虚拟,应该是这样吗?而且我相信“所有者:mongoose.Schema.ObjectId” - 是为了关系。并且_id 不能更改。你我感兴趣的是可以用猫鼬在查询结果中用 id 替换 _id。
-
是的,虚拟属性确实出现在从
.find返回的模型实例上;这就是他们背后的全部想法。每个 MongoDB 文档都必须有一个_id属性,但 ObjectId 属性也可以用于其他用途——通常作为对另一个集合中文档的引用。 -
我有代码:MySchema.virtual('ID').get(function() { return "xxx"; });在查找结果中没有 ID 属性。有什么问题?