我使用函数.populate()
来获取按类别
分组的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);
}));
});
当我使用 Postman 时,results
为 null
当我使用 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);
});
});
使用 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);
});
});
});
关于node.js - 如何正确使用函数 populate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38954992/