【发布时间】:2016-05-13 07:08:35
【问题描述】:
我试图在我的一个架构中创建一个虚拟项目,这将需要访问此架构中引用的项目所引用的数据(是的,这是 2 个深度引用,连接 3 个架构/模型)
我已尝试使用 Model/Schema A/B/C.. 尽可能地模拟代码。
这将是 ModelA 的架构,其中包含依赖于引用的虚拟项目:
// models/modela.js
// SchemaA for ModelA
const SchemaA = new Schema({
_foo: {
// References ModelB
type: Schema.Types.ObjectId,
ref: 'ModelB'
}
})
// Virtual `Modela.something`, which needs the data from ModelC.baz
SchemaA.virtual('something').get(function () {
// How can I access ModelC.baz
return 'Value from ModelC'
});
然后是 ModelB 的架构:
// models/modelb.js
// SchemaB for ModelB
const SchemaB = new Schema({
_bar: [{
// References ModelC.baz
type: Schema.Types.ObjectId,
ref: 'ModelC'
}]
})
ModelC 的架构:
// models/modelc.js
// SchemaC for ModelC
const SchemaC = new Schema({
baz: Schema.Types.String
})
正如您在上面看到的,我需要做的是从 ModelA
中的虚拟something 项目中访问 Modelc.haz
我认为如果我通过查询本身对两个人口都进行了处理,那么也许这会起作用,所以我尝试了类似的方法:
this.find()
.populate( '_foo' )
.populate( '_foo._bar' )
这没有用(我实际上并没有真正期望它,但是哦,好吧)
【问题讨论】:
标签: javascript node.js mongodb mongoose mongoose-populate