我在猫鼬中有一个自引用员工模式。
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var Employee = new Schema({
name: String,
description: {
type: String,
default: 'No description'
},
manager: {
type: Schema.Types.ObjectId,
ref: 'Employee',
default: null
},
reportee: [{
type: Schema.Types.ObjectId,
ref: 'Employee'
}]
});
一个员工可以是经理,也可以有多个报告人。如果 manager 为 null,则该员工被视为顶级员工。
我需要基于这个模型创建层次结构。我正在努力生成所需的输出。
到目前为止,我已尝试使用popluate()和mongoose -deep-populate模块,但我无法获得所需的输出。我想知道它是因为我有一个自引用模型。或者可能是我没有正确使用这两个选项。
这是我用deep-populate
模块尝试过的。它似乎正在填充reportee 模型,而不是reportee 模型的repotree。简而言之,它仅填充 1 级记录。
Employee.deepPopulate(employees, 'reportee.reportee.reportee.reportee.reportee', function (err, _employee) {
employees.forEach(function (employee) {
});
});
请建议我如何检索所有员工层次结构?