猫鼬:如何从模式的虚拟属性中填充子属性
Mongoose: How to populate sub properties from within a schema's virtual properties
我有一个使用 mongoose 定义的 mongodb 模式,我有一些子文档嵌套在多个级别上。我希望能够在另一个模式的虚拟属性中访问这些(填充的)子文档,但我似乎无法这样做。我似乎能够在嵌套的第一层访问文档,但不能再往下访问。
这是我的架构示例:
const SchemaA = {
name: {type: string}
items: [
{
schemaB: {
type: schema.type.ObjectId,
ref: "B"
}
}
]
}
const SchemaB = {
name: {type: string}
schemaC: {
type: schema.type.ObjectId,
ref: "C"
}
}
const SchemaC = {
types: [{label: {type: String}}]
}
我想要做的是从 SchemaA 上的虚拟 属性 内部访问 SchemaC.types。
这是我想要实现的目标:
SchemaA.virtual("types").get(function(){
return this.items.map(item => {
return {name: item.schemaB.name, types: item.schemaB.SchemaC.types}
})
})
从上面看来 item.schemaB
似乎填充得很好,但 item.schemaB.SchemaC
似乎只是 schemaC 的 objectId。
老实说,我不确定这是否可行,但我似乎无法在网上的任何地方找到明确的答案,所以我希望这里有人可以提供帮助。谢谢!
所以在猫鼬中你需要使用populate
方法。
.populate({
path: 'schemaB',
populate: {
path: 'schemaC'
}
});
我有一个使用 mongoose 定义的 mongodb 模式,我有一些子文档嵌套在多个级别上。我希望能够在另一个模式的虚拟属性中访问这些(填充的)子文档,但我似乎无法这样做。我似乎能够在嵌套的第一层访问文档,但不能再往下访问。
这是我的架构示例:
const SchemaA = {
name: {type: string}
items: [
{
schemaB: {
type: schema.type.ObjectId,
ref: "B"
}
}
]
}
const SchemaB = {
name: {type: string}
schemaC: {
type: schema.type.ObjectId,
ref: "C"
}
}
const SchemaC = {
types: [{label: {type: String}}]
}
我想要做的是从 SchemaA 上的虚拟 属性 内部访问 SchemaC.types。
这是我想要实现的目标:
SchemaA.virtual("types").get(function(){
return this.items.map(item => {
return {name: item.schemaB.name, types: item.schemaB.SchemaC.types}
})
})
从上面看来 item.schemaB
似乎填充得很好,但 item.schemaB.SchemaC
似乎只是 schemaC 的 objectId。
老实说,我不确定这是否可行,但我似乎无法在网上的任何地方找到明确的答案,所以我希望这里有人可以提供帮助。谢谢!
所以在猫鼬中你需要使用populate
方法。
.populate({
path: 'schemaB',
populate: {
path: 'schemaC'
}
});