一个属性的mongoose schema multi ref

时间:2014-12-25 05:43:52

标签: mongodb mongoose schema ref

如何为一个mongoose模式的一个属性编写多个ref,就像这样(但是错误的):

var Schema = mongoose.Schema;
var PeopleSchema = new Schema({
    peopleType:{
        type: Schema.Types.ObjectId,
        ref: ['A', 'B'] /*or 'A, B'*/
    }
})

2 个答案:

答案 0 :(得分:12)

您应该在模型中添加字符串字段并在其中存储外部模型名称,并且refPath属性 - Mongoose Dynamic References

{{1}}

现在,Mongoose将使用相应模型中的对象填充peopleType。

答案 1 :(得分:0)

在当前版本的Mongoose中,我仍然没有看到可以使用你想要的语法进行多重参考。但您可以使用here所述的“填充数据库”方法的一部分。我们只需要将人口逻辑移动到人口方法的明确变体:

var PeopleSchema = new Schema({
    peopleType:{
        //Just ObjectId here, without ref
        type: mongoose.Schema.Types.ObjectId, required: true,
    },
    modelNameOfThePeopleType:{
        type: mongoose.Schema.Types.String, required: true
    }
})

//And after that
var People = mongoose.model('People', PeopleSchema);
People.findById(_id)
    .then(function(person) {
        return person.populate({ path: 'peopleType',
            model: person.modelNameOfThePeopleType });
    })
    .then(populatedPerson) {
        //Here peopleType populated
    }
...