如何正确使用函数populate()

我使用函数.populate()来获取按category分组的equipements ,所以我的模型是这样的

在这里输入图像描述

 var mongoose = require('../config/db'); var EquipementSchema = mongoose.Schema({ libelle: String, marque: String, category: { type: mongoose.Schema.Types.ObjectId, ref: 'Category' } }); module.exports = mongoose.model('Equipement', EquipementSchema); 

路线:

 router.get('/categorie_id', function(req, res, next){ models.equipement.aggregate([ { $group : { _id : '$categorie_id', equipements: { $push: '$$ROOT' } } } ].exec(function(err , results){ if(err) res.json({error: err}); res.json(results); })); }); 

在这里输入图像描述

当我使用邮差时, results是空的

在这里输入图像描述

当我使用cmd它的作品:

在这里输入图像描述

谁能帮忙?

你的代码中有一个错字:

 router.get('/categorie_id', function(req, res, next){ models.equipement.aggregate([ { $group : { _id : '$categorie_id', equipements: { $push: '$$ROOT' } } } ].exec(function(err , results){ // <-- typo here: missing a closing bracket after the pipeline array if(err) res.json({error: err}); res.json(results); })); }); 

这应该是

 router.get('/categorie_id', function(req, res, next){ models.equipement.aggregate([ { "$group": { "_id": "$categorie_id", "equipements": { "$push": "$$ROOT" } } } ]).exec(function(err, results){ if(err) res.json({error: err}); res.json(results); }); }); 

纠正聚合pipe道查询后,使用Model.populate()函数来填充文档引用。 使用results数组填充_idpath为:

 router.get('/categorie_id', function(req, res, next){ models.equipement.aggregate([ { "$group": { "_id": "$categorie_id", "equipements": { "$push": "$$ROOT" } } } ]).exec(function(err, results){ if (err) res.json({error: err}); models.equipement.populate(results, { "path": "_id" }, function(err, result) { if(err) res.json({error: err}); console.log(result); res.json(result); }); }); });