Mongoose动态子文档模式

时间:2016-08-30 20:21:34

标签: node.js mongodb express mongoose

我有一个查询架构:

const inquirySchema = new mongoose.Schema({
  client: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Client' }],
  data: dynamicSchema?
}, {
  timestamps: true
});

我想填充"数据"带有子文档的属性字段,但我希望它接受不同的子文档模式。我有一个"事件"和"财产"子模式,可以作为"数据"插入。如何在我的查询架构中允许这个?看来我必须实际指定它期望的WHICH子文档架构......

我的孩子模式:

const eventSchema = new mongoose.Schema({
  name: { min: Number, max: Number },
  date: { type: Date },
  zone: { type: String }
});

const propertySchema = new mongoose.Schema({
  price: { min: Number, max: Number },
  status: { type: String },
  zone: { type: String }
});

1 个答案:

答案 0 :(得分:1)

您可以将User.find_by_id(session["warden.user.user.key"][0][0])设为data,而无需在架构中定义任何引用,如果要填充它们,请在{{type : ObjectIdpath中使用model 1}}来自不同populate的{​​{1}},但您必须有populate来选择collectionlogic。{/ p>

以下是如何做到这一点:

<强> inquirySchema

collection

填充populate

const inquirySchema = new mongoose.Schema({
  client: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Client' }],
  data: { type: mongoose.Schema.Types.ObjectId }
}, {
  timestamps: true
});