我在Mongoose中创建了一个团队模式,并引用了用户 . 这些用户通过虚拟的被调用成员填充,以便维护对象中的类型 . 成员虚拟包含多个用户,可以使用团队模型上的.populate(“成员”)填充 .
当数据库包含引用时,填充成员会将属性设置为用户数组 . 当数据库不包含任何引用时,members属性将设置为undefined而不是空数组 . 这是Mongoose的意图还是我需要更多配置架构?
这是我目前的代码:
const TeamSchema = new mongoose.Schema(
{
name: { type: String, required: true },
memberIds: [{ type: mongoose.Schema.Types.ObjectId, ref: "User" }],
createdAt: { type: Date, default: Date.now }
},
{
toJSON: {
virtuals: true
}
}
);
TeamSchema.virtual("members", {
ref: "User",
localField: "memberIds",
foreignField: "_id",
justOne: false
});