我使用函数.populate()
将equipements
按category
分组,所以我的模型就像这样
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);
}));
});
当我使用Postman时,results
为空
当我使用cmd
时,它可以工作:
有人可以帮忙吗?
答案 0 :(得分:0)
您的代码中有拼写错误:
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);
});
});
在更正聚合管道查询后,使用 Model.populate()
功能填充文档引用。使用results
数组将_id
路径填充为:
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);
});
});
});