如何为一个mongoose模式的一个属性编写多个ref,就像这样(但是错误的):
var Schema = mongoose.Schema;
var PeopleSchema = new Schema({
peopleType:{
type: Schema.Types.ObjectId,
ref: ['A', 'B'] /*or 'A, B'*/
}
})
答案 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
}
...