我在mongoose中有一个自引用员工架构。
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
模块的内容。它似乎是填充报告者模型而不是报告者模型的报告。我 n缩短其仅填充的1级记录。
Employee.deepPopulate(employees, 'reportee.reportee.reportee.reportee.reportee', function (err, _employee) {
employees.forEach(function (employee) {
});
});
请建议我如何审核所有员工层级?
答案 0 :(得分:0)
要回答我自己的问题,我正在使用mongoose-deep-populate库。
要使用它,我们需要安装模块:
npm install mongoose-deep-populate
//注册插件 var deepPopulate = require(' mongoose-deep-populate'); Employee.plugin(deepPopulate);
然后使用此代码:
Employee.deepPopulate(employees, 'reportee.reportee.reportee.reportee.reportee', function (err, _employee) {
employees.forEach(function (employee) {
});
});
这将加载 5级报告者,正如我们提到的那样reportee.reportee.reportee.reportee.reportee