2

ich die Funktion .populate() auf die bekommen equipements von category gruppiert, so dass mein Modell ist wie diesesSo wird die Funktion populate() verwenden, richtig

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

Routen:

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

Die results ist null, wenn ich Postman

enter image description here

verwendet und als ich die cmd verwendet es funktioniert:

enter image description here

Kann jemand helfen?

Antwort

0

Sie haben einen Tippfehler in Ihrem Code hier:

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

die

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

Verwenden Sie die Model.populate() Funktion zu füllen Dokumentreferenzen sein sollte, nachdem das Aggregat Pipeline Abfrage zu korrigieren. Verwenden Sie das Array results, um den Pfad _id wie folgt zu füllen:

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