我设置了我的 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
模式)
我可能在文档中忽略了它,但我什么也没看到。如何引用模型子架构,所以当我在查询中填充该项目时,它会使用模型文档中的子文档填充它Partition
?
我尝试将字段文档引用为Partition.fields
,导致错误:
MissingSchemaError:尚未为模型“Partition.fields”注册架构。
我根据从另一个 SO 线程中读取的内容尝试了上述ref
值,但它似乎不起作用。