2

の使い方equipementscategoryでグループ化されたので、私のモデルは、この関数移入()私が取得する機能<code>.populate()</code>を使用正しく

enter image description here

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); 
    })); 
}); 

enter image description here

私はポストマン

enter image description here

を使用する場合

resultsがnullで、私はcmdを使用したときにそれが動作します:

enter image description here

誰が助けることはできますか?

答えて

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); 
     }); 
    }); 
}); 
関連する問題