簡體   English   中英

貓鼬中的深度填充自引用架構

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM