[英]Mongoose dynamic sub document schema
我有一个查询模式:
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 }
});
你可以让你data
的type : ObjectId
没有定义模式中的任何引用,当你想填充它们,使用path
和model
在populate
到populate
不同collection
,但你必须有一个logic
的选择,其collection
到populate
从。
您可以按照以下步骤进行操作:
查询模式
const inquirySchema = new mongoose.Schema({
client: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Client' }],
data: { type: mongoose.Schema.Types.ObjectId }
}, {
timestamps: true
});
填充data
if(isEvent)
{
//Populate using Event collection
Inquiry.find({_id : someID}).
populate({path : 'data' , model : Event}).
exec(function(err,docs){...});
}
else if(isProperty)
{
//Populate using Property collection
Inquiry.find({_id : someID}).
populate({path : 'data' , model : Property}).
exec(function(err,docs){...});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.