Express Mongoose:如何使用ObjectId链接模型?

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:布尔

我用的是Express、Mongoose和Mongodb。我有两个模型,一个供用户使用,另一个供审查,如下所示:

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"
    }); 

非常感谢。这就是我要找的。