如何正确使用函数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
数组填充_id
path为:
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); }); }); });