我设置我的MongoDB模型,并且我有一个模型架构(Partition
模型)设置,其中一个架构项(fields
)是一个跟随另一个的项目数组架构(Field
架构)
这是分区模型(使用分区模式和字段模式):
// Partition model
module.exports = Mongoose => {
const Schema = Mongoose.Schema
// Field Schema
const fieldSchema = new Schema({
name: {
type: Schema.Types.String
}
})
// Partition Schema
const partitionSchema = new Schema({
name: {
type: Schema.Types.String
},
// `fields` is an array of objects that must follow the `fieldSchema`
fields: [ fieldSchema ]
})
return Mongoose.model( 'Partition', partitionSchema )
}
然后我有另一个模型(Asset
模型),它有一个attributes
数组,它包含每个包含两个项_field
和value
的对象。 _field
必须是一个ID,它将引用分区模型fields._id
值中的项目。
继承资产模型:
// Asset model
module.exports = Mongoose => {
const Schema = Mongoose.Schema
const assetSchema = new Schema({
attributes: [{
// The attributes._field should reference one of the Partition field values
_field: {
type: Schema.Types.ObjectId,
ref: 'Partition.fields' // <-- THIS LINE
},
value: {
type: Schema.Types.Mixed,
required: true
}
}],
// Reference the partition ID this asset belongs to
_partition: {
type: Schema.Types.ObjectId,
ref: 'Partition'
}
})
return Mongoose.model( 'Asset', assetSchema )
}
我遇到问题的地方是_field
架构中的Asset
项目。我不确定我应该设置什么ref
值,因为它引用了一个子模式(意味着Field
模式中的Partition
模式)
我可能在文档中忽略了它,但我没有看到任何东西。如何引用模型子模式,因此当我populate查询中的该项时,它会使用Partition
模型文档中的子文档填充它?
我试图将字段文档引用为Partition.fields
,这导致了错误:
MissingSchemaError:尚未为模型“Partition.fields”注册架构。
我根据我从另一个SO线程中读取的内容尝试了上述ref
值,但它似乎不起作用。
答案 0 :(得分:0)
显然,这是不可能的..所以不适合创建另一个模型