我想使用“填充”方法用猫鼬填充查询。我正在使用最新/稳定的猫鼬版本。我的架构的相关部分定义如下。问题是,当我尝试填充const sessions = await Session.find().populate({ path: "coach", select: "name email" })
时,我总是得到"coach": null
。
我希望它简单地返回与我的查询相匹配的会话以及教练(用户)对象。我在这里做什么错了?
UserSchema
const mongoose = require('mongoose');
const UserSchema = new mongoose.Schema({
email: {
type: String,
required: [true, "email is required"],
unique: [true, "email must be unique"],
match: [/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/, "Invalid email"]
},
name: {
type: String,
required: [true, "name is required"]
},
(....)
});
export const User = mongoose.model('User', UserSchema);
SessionSchema
const mongoose = require('mongoose');
const SessionSchema = new mongoose.Schema({
coach: { type: mongoose.Schema.ObjectId, ref: 'User', required: true },
location: {
street: { type: String }
},
(......)
});
export const Session = mongoose.model('Session', SessionSchema);
答案 0 :(得分:0)
我认为教练类型应为以下类型(Schema.Types
似乎丢失了):
coach: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true },
答案 1 :(得分:0)
我找到了。对不起大家。代码还可以。问题是我正在使用具有“ id”属性而非“ _id”属性的条目为数据库播种。因此,“ id”没有正确保存,因此响应实际上是null
。