Я настраиваю свои модели 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
должен быть идентификатором, который будет ссылаться на элемент в значениях 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».
Я попробовал указанное выше значение ref
на основе того, что я прочитал из другого потока SO, но, похоже, оно не работает.