Mongoose:如何填充嵌套数组(深层)

我在填充深层时遇到了麻烦。 我search并阅读了很多页面,但无法parsing。

这是我的模式:

var boxSchema = new mongoose.Schema({ name: { type: String, unique: true }//, required: true , height: { type: Number },//, required: true width: { type: Number }, sensors: [ { type: mongoose.Schema.ObjectId, ref: 'Sensor', } ] }); var slotSchema = new mongoose.Schema({ slotPosition: { type: Number, unique: true }, startDate: { type: Date, default: Date.now }, harvestDate: { type: Date, default: null }, Box_id: { type: mongoose.Schema.ObjectId, ref: 'Box' }, TypePlant_id: { type: mongoose.Schema.ObjectId, ref: 'TypePlant' } }); var typePlantSchema = new mongoose.Schema({ name: { type: String, unique:true }, expectedHarvestDuration: { type: Number, default: 0 }, expectedPh: { type: Number }, expectedTemp: { type: Number }, expectedLight: { type: Number }, image: { type:String } }); var plantRecordSchema = new mongoose.Schema({ date: { type: Date, default: Date.now }, rootLength: { type: Number }, plantLength: { type: Number }, Slot: { type: mongoose.Schema.ObjectId, ref: 'Slot' } }); 

我需要与所有关联的返回槽数据的目标。 从这个链接看到提示后,我创build了这样的代码:

 Slot.find({_id:mongoose.Types.ObjectId("5657e204b359fd6c103d0de5")}) .populate('TypePlant_id') .populate('Box_id') .exec(function(err,doc){ Slot.populate(doc, { path:'Box_id.sensors', model:'Sensor' },function(err,results){ console.log(err) console.log(results); }) }); 

结果如下:

 [ { startDate: Fri Nov 27 2015 11:54:28 GMT+0700 (SE Asia Standard Time), harvestDate: null, __v: 0, slotPosition: 1, Box_id: { sensors: [ [Object], [Object], [Object], [Object] ], __v: 0, width: 200, height: 100, name: 'testBox', _id: 5657e204b359fd6c103d0de0 }, TypePlant_id: { expectedHarvestDuration: 20, __v: 0, image: '/images/peppersalad.png', expectedTemp: 20, expectedPh: 15, name: 'dua leo', _id: 5657e204b359fd6c103d0ddb }, _id: 5657e204b359fd6c103d0de5 } ] 

正如你看到的, 它不会填充盒子的传感器(传感器:[[Object],[Object],[Object],[Object])的内容

尽pipe如此,从箱子里,我仍然很好地填充传感器

 Box.find({_id: mongoose.Types.ObjectId("5657e204b359fd6c103d0de0")}) .populate("sensors") .exec(function(err,doc){ console.log(doc); }); ----------------------------------------- Result ----------------------------------------- [ { sensors: [ { boxId: 5657e204b359fd6c103d0de0, __v: 0, description: 'A temperature sensor for Outbox', name: 'OutTemperature', _id: 5657e204b359fd6c103d0de2 }, { boxId: 5657e204b359fd6c103d0de0, __v: 0, description: 'A temperature sensor for Inbox', name: 'InTemperature ', _id: 5657e204b359fd6c103d0de1 }, { boxId: 5657e204b359fd6c103d0de0, __v: 0, description: 'sensor for measuring pH', name: 'pHSensor', _id: 5657e204b359fd6c103d0de3 }, { boxId: 5657e204b359fd6c103d0de0, __v: 0, description: 'sensor for measuring Light consumption', name: 'Light sensor', _id: 5657e204b359fd6c103d0de4 } ], __v: 0, width: 200, height: 100, name: 'testBox', _id: 5657e204b359fd6c103d0de0 } ] 

我也使用plugin mongoose-deep-populate ,但它仍然给出相同的结果。 请帮助我从插槽填充传感器的信息。

非常感谢

对不起,我的代码已经从插槽填充传感器的数据。 这个错误来自console.log,不能打印出完整的结果。 我仍然完全通过点('。')来访问其属性。