如何使用功能填入()正确
问题描述:
我用的功能.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);
}));
});
的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);
});
});
使用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);
});
});
});