我正在使用 Express、Mongoose 和 Mongodb。我有两个模型,一个用于用户,另一个用于评论,如下所示:
var User = mongoose.Schema({
firstName: String,
lastName: String,
email: String
});
mongoose.model("User", User);
var Review = mongoose.Schema({
foodRating: Number,
serviceRating: Number,
locationRating: Number,
wouldReturn: boolean
});
mongoose.model("Review", Review);
我想以评论属于用户的方式链接两个模型。
我读过 ObjectId,但不清楚如何实现它。我应该创建它,然后使用它,像这样:
const MyObjectId = mongoose.Types.ObjectId;
然后覆盖模型的 _id 我想用它链接到我的第一个模型?
var User = mongoose.Schema({
firstName: String,
lastName: String,
email: String,
review: [MyObjectId] // retrieves model below from its _id:MyObjectId
});
mongoose.model("User", User);
var Review = mongoose.Schema({
_id: MyObjectId, // overriding _id with ObjectId
foodRating: Number,
serviceRating: Number,
locationRating: Number,
wouldReturn: boolean
});
mongoose.model("Review", Review);
这样对吗?或者我将如何做到这一点?
从猫鼬文档中查看:http : //mongoosejs.com/docs/populate.html
基本上,你想要做的是:
const MyObjectId = mongoose.Types.ObjectId;
var User = mongoose.Schema({
firstName:String,
lastName: String,
email: String,
review: [MyObjectId] // retrieves model below from its _id:MyObjectId
});
mongoose.model('User', User);
var Review = mongoose.Schema({
user: { type: MyObjectId, ref: 'User' } // overriding _id with ObjectId
foodRating: Number,
serviceRating: Number,
locationRating: Number,
wouldReturn: boolean,
});
mongoose.model('Review', Review);
完成后,来自 User 文档的 _id 将存储在 Review 文档的 user 字段中。然后你可以做这样的事情:
Review.
findOne({ foodRating: 4 }).
populate('user').
exec((err, review) => {
if (err) return handleError(err);
console.log('The user is %s %s', review.user.firstName, review.userLastName);
// prints "The user is So-and-so"
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句