簡體   English   中英

為樹視圖填充貓鼬相關的模式

[英]populate mongoose co-related schema for tree-view

我創建了以下貓鼬架構

工作區模型

 var mongoose=require('mongoose') var uniqueValidator=require('mongoose-unique-validator'); var workspaceSchema=new mongoose.Schema({ name:{type: String, lowercase: true, required: [true, "can't be blank"], //match: [/^[a-zA-Z0-9]$/, 'is invalid'], index: true, unique: true }, processes:[{type:mongoose.Schema.Types.ObjectId,ref:'Process'}], },{timestamp:true}) workspaceSchema.plugin(uniqueValidator,{message:'is already taken'}); module.exports=mongoose.model('Workspace',workspaceSchema) 

process-model.js

 var mongoose=require('mongoose') var uniqueValidator=require('mongoose-unique-validator') var processSchema=new mongoose.Schema({ name:{type: String, lowercase: true, required: [true, "can't be blank"], //match: [/^[a-zA-Z0-9]$/, 'is invalid'], index: true, unique: true }, state:String, //enabled/disabled/started/stopped/checkin/checkout/starting/stopping queues:[{type:mongoose.Schema.Types.ObjectId,ref:'Queue'}], workspace:{type:mongoose.Schema.Types.ObjectId,ref:'Workspace'} },{timestamp:true}) processSchema.plugin(uniqueValidator,{message:'is already taken'}); module.exports=mongoose.model('Process',processSchema) 

隊列模型

 var mongoose=require('mongoose') var uniqueValidator=require('mongoose-unique-validator'); var queueSchema=new mongoose.Schema({ name:{type: String, lowercase: true, required: [true, "can't be blank"], //match: [/^[a-zA-Z0-9]$/, 'is invalid'], index: true, unique: true }, type:String, //start//end/custom/decision/split/join prev:{type:mongoose.Schema.Types.ObjectId,ref:'Queue'}, next:{type:mongoose.Schema.Types.ObjectId,ref:'Queue'}, workitems:[{type:mongoose.Schema.Types.ObjectId,ref:'Workitem'}], process:{type:mongoose.Schema.Types.ObjectId,ref:'Process'} },{timestamp:true}) queueSchema.plugin(uniqueValidator,{message:'is already taken'}); module.exports=mongoose.model('Queue',queueSchema) 

workitem-model.js

 var mongoose=require('mongoose') var uniqueValidator=require('mongoose-unique-validator'); var workitemSchema=new mongoose.Schema({ status:String, //locked//processing//done//available lockedby:String, queue:{type:mongoose.Schema.Types.ObjectId,ref:'Queue'}, process:{type:mongoose.Schema.Types.ObjectId,ref:'Process'} },{timestamp:true}) //workitemSchema.plugin(uniqueValidator,{message:'is already taken'}); module.exports=mongoose.model('Workitem',workitemSchema) 

想要以以下樹形視圖格式填充數據

工作區-> [處理]-> [隊列]-> [工作項]

嘗試執行以下操作,但所有子路徑和數組項均未填充。

 ... var Process=require('./models/process-model') var Workspace=require('./models/workspace-model') var Workitem=require('./models/workitem-model') var Queue=require('./models/queue-model') Workspace.findOne({name:'dummy'}).populate({ path: 'processes', // Get friends of friends - populate the 'friends' array for every friend populate: { path: 'queues' } }).exec().then((data)=>{console.log(data}) 

以下是示例數據文件。

 workspace { "_id": ObjectId("59f313665087dc2648ab2dc1"), "name": "dummy", "processes": [ ObjectId("59f313665087dc2648ab2dc2") ], "__v": 1 } process { "_id": ObjectId("59f313665087dc2648ab2dc2"), "workspace": ObjectId("59f313665087dc2648ab2dc1"), "state": "enabled", "name": "outward", "queues": [ ObjectId("59f3312ee9bbaa27e032f55b"), ObjectId("59f3312ee9bbaa27e032f55c"), ObjectId("59f3312ee9bbaa27e032f55d") ], "__v": 1 } queue { "_id": ObjectId("59f3312ee9bbaa27e032f55c"), "process": ObjectId("59f313665087dc2648ab2dc2"), "type": "custom", "name": "data entry", "workitems": [], "__v": 0, "next": ObjectId("59f3312ee9bbaa27e032f55d"), "prev": ObjectId("59f3312ee9bbaa27e032f55b") } { "_id": ObjectId("59f3312ee9bbaa27e032f55d"), "process": ObjectId("59f313665087dc2648ab2dc2"), "type": "end", "name": "work exit", "workitems": [], "__v": 0, "prev": ObjectId("59f3312ee9bbaa27e032f55c") } { "_id": ObjectId("59f3312ee9bbaa27e032f55b"), "process": ObjectId("59f313665087dc2648ab2dc2"), "type": "start", "name": "work introduction", "workitems": [ ObjectId("59f33b3b99506b25f033ecf5") ], "__v": 1, "next": ObjectId("59f3312ee9bbaa27e032f55c") } workitem { "_id": ObjectId("59f33b3b99506b25f033ecf5"), "status": "available", "__v": 0, "process": ObjectId("59f313665087dc2648ab2dc2"), "queue": ObjectId("59f3312ee9bbaa27e032f55b") } 

請幫忙 。 提前致謝..

問題是在2-3個嵌套級別后console.log無法打印。 解決方法如下

 var util = require('util') ..... //following line will print nested objects console.log(util.inspect(data, false, null)) .... 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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