幻影枫*_*影枫韵 11 schema ref mongoose mongodb
如何为一个mongoose模式的一个属性编写多个ref,就像这样(但是错误的):
var Schema = mongoose.Schema;
var PeopleSchema = new Schema({
peopleType:{
type: Schema.Types.ObjectId,
ref: ['A', 'B'] /*or 'A, B'*/
}
})
Run Code Online (Sandbox Code Playgroud)
小智 15
您应该在模型中添加字符串字段并在其中存储外部模型名称,以及refPath属性 - Mongoose动态引用
var Schema = mongoose.Schema;
var PeopleSchema = new Schema({
externalModelType:{
type: String
},
peopleType:{
type: Schema.Types.ObjectId,
refPath: 'externalModelType'
}
})
Run Code Online (Sandbox Code Playgroud)
现在,Mongoose将使用相应模型中的对象填充peopleType.
小智 5
在当前版本的 Mongoose 中,我仍然看不到使用您想要的语法进行多引用。但是您可以使用此处描述的“跨数据库填充”方法的一部分。我们只需要将人口逻辑移动到人口方法的显式变体:
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
}
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3164 次 |
| 最近记录: |