Express Mongoose:如何使用ObjectId链接模型?
我用的是Express、Mongoose和Mongodb。我有两个模型,一个供用户使用,另一个供审查,如下所示:Express Mongoose:如何使用ObjectId链接模型?,express,mongoose,Express,Mongoose,我用的是Express、Mongoose和Mongodb。我有两个模型,一个供用户使用,另一个供审查,如下所示: const MyObjectId = mongoose.Types.ObjectId; var User=mongoose.Schema({ 名字:String, 姓氏:String, 电子邮件:String }); 猫鼬模型(“用户”,用户); var Review=mongoose.Schema({ 食物:数字, 服务等级:编号, 位置等级:编号, wouldReturn:布尔
const MyObjectId = mongoose.Types.ObjectId;
var User=mongoose.Schema({
名字:String,
姓氏:String,
电子邮件:String
});
猫鼬模型(“用户”,用户);
var Review=mongoose.Schema({
食物:数字,
服务等级:编号,
位置等级:编号,
wouldReturn:布尔值
});
猫鼬模型(“审查”,审查);
我想链接这两个模型,以一种评论属于用户的方式
我读过ObjectId,但不清楚如何实现它。我应该创建它,然后使用它,就像这样:
const MyObjectId = mongoose.Types.ObjectId;
然后覆盖要链接到第一个模型的模型的_id
var User=mongoose.Schema({
名字:String,
姓氏:String,
电子邮件:String,
review:[MyObjectId]//从以下模型的_id:MyObjectId检索模型
});
猫鼬模型(“用户”,用户);
var Review=mongoose.Schema({
_id:MyObjectId,//用ObjectId覆盖_id
食物:数字,
服务等级:编号,
位置等级:编号,
wouldReturn:布尔值
});
猫鼬模型(“审查”,审查);
这是正确的吗?或者我该怎么做?从猫鼬文档中查看: 基本上,您要做的是:
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);
完成后,用户文档中的_id将存储在审阅文档的用户字段中。然后你可以这样做:
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"
});
非常感谢。这就是我要找的。