0

我设置了我的 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值,但它似乎不起作用。

4

1 回答 1

0

显然,这是不可能的。所以我只能求助于创建另一个模型

于 2016-01-29T03:29:57.597 回答