[英]Deep populate self referencing schema in 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
模塊的方法。 它似乎正在填充報表對象模型,但沒有填充報表對象模型。 我僅介紹其唯一填充的1級記錄。
Employee.deepPopulate(employees, 'reportee.reportee.reportee.reportee.reportee', function (err, _employee) {
employees.forEach(function (employee) {
});
});
請提出如何檢索所有員工等級的建議?
為了回答我自己的問題,我正在使用貓鼬-深-人口圖書館。
要使用它,我們需要安裝模塊:
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) {
});
});
正如我們提到的reportee.reportee.reportee.reportee.reportee一樣,這將加載5個級別的 reportee.reportee.reportee.reportee.reportee
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.