我们正在构建一个API,并决定在做这样的引用之间:
var postSchema = Schema({
user: { type: Schema.Types.ObjectId, ref: 'User' }
});
或仅将String
与_id
一起使用:
var postSchema = Schema({
user: { type: String }
});
以任何一种方式进行这样做有什么好处吗?
答案 0 :(得分:1)
猫鼬模式与MongoDB内部工作无关。如果您使用此选项,则基于偏好设置:
var postSchema = Schema({
user: { type: Schema.Types.ObjectId, ref: 'User' }
});
猫鼬会给您比其他解决方案一些优势。 Population是其中之一。
答案 1 :(得分:0)
Mongoose 提供了一种机制来查询 ref 对象作为响应,如果 Schema 定义如下所述
var postSchema = Schema({
title: {type: String}
user: { type: Schema.Types.ObjectId, ref: 'User' }
});
然后查询就像
Post.
findOne({ title: "Let's learn" }).
populate('user').
exec(function (err, post) {
if (err) return handleError(err);
// your post with user details
});
这是一个用例, 查看此文档 https://mongoosejs.com/docs/populate.html 以获取有关 ref 的更详细说明和用例。