Mongoose 使用多个本地/外键对填充虚拟
Posted
技术标签:
【中文标题】Mongoose 使用多个本地/外键对填充虚拟【英文标题】:Mongoose Populate Virtuals with Multiple Local/Foreign Key Pairs 【发布时间】:2017-09-19 00:02:48 【问题描述】:我刚刚发现了 Mongoose 的 Populate Virtuals 方法,它将为我当前的项目节省大量资金。不过,我希望进一步扩展它。有没有一种基于多个本地/外来密钥对填充的简单方法?这是代码可能的样子的示例(注意:这可能不是一个很好的示例,但希望它传达了我的问题的基础)。
var workerSchema = new Schema(
name: String,
locationCode: String,
departmentCode: String
);
var deparmentSchema = new Schema(
locationCode: String, //Note: neither location nor code
code: String, //are unique, but the combination of them are
manager: String,
otherInfoAboutDepartment: String
);
workerSchema.virtual('department',
ref: "Department",
localField: ["locationCode", "departmentCode"],
foreignField: ["locationCode", "code"]
);
【问题讨论】:
【参考方案1】:虽然这可能不是您正在寻找的答案。你可以得到这样的解决方法
workerSchema.virtual('department1',
ref: "Department",
localField: "locationCode",
foreignField: "locationCode"
)
workerSchema.virtual('department2',
ref: "Department",
localField: "departmentCode",
foreignField: "code"
)
在查找查询中,您可以使用类似
Worker.find().populate('department1').populate('department2')
在处理数据时,您可以检查数据字段是否为空,并将两个输出合并为一个
【讨论】:
以上是关于Mongoose 使用多个本地/外键对填充虚拟的主要内容,如果未能解决你的问题,请参考以下文章