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 使用多个本地/外键对填充虚拟的主要内容,如果未能解决你的问题,请参考以下文章

使用 Mongoose 进行虚拟填充

Mongoose 虚拟填充和聚合

Mongoose:在数组中填充对象的问题

Mongoose 虚拟填充返回 null

Django 的唯一外键对

外键对数据插入的影响