私はマングースに自己参照従業員スキーマを持っています。
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モジュールを使用しようとしましたが、目的の出力を取得できません。私は自己参照モデルを持っているのではないかと思います。または、これら 2 つのオプションを適切に使用していない可能性があります。
これは私がdeep-populate
モジュールで試したことです。レポーターモデルにデータを入力しているようですが、レポーターモデルのレポツリーではありません。つまり、1 レベルのレコードのみを入力します。
Employee.deepPopulate(employees, 'reportee.reportee.reportee.reportee.reportee', function (err, _employee) {
employees.forEach(function (employee) {
});
});
すべての従業員階層を取得する方法を教えてください。