2

Я использовал функцию .populate() получить equipements сгруппированы по category, так что моя модель нравится этаКак использовать функцию Заполнить() правильно

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

results равна нулю, когда я использовал Почтальон

enter image description here

и когда я использовал 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); 
     }); 
    }); 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^