我在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
});