2016-10-03 4 views
0

In meiner node.js App mag ich mehr mongodb Sammlungen in einer Reihe zur Abfrage mongoose mit der async Plugin auf Ergebnis aus dem ersten Rückruf in der Serie basiert.Abfrage mehr mongodb Sammlungen in Knoten App Mongoose async

Bisher habe ich diesen Arbeits Code, aber ich bin sicher, dass es ein besserer Weg, es zu tun async:

router.route('/project/:projectId') 
    .get(function(req, res) { 

     var getProjectDetails = function(cb) { 
      models.Project.findById(req.params.projectId, function(err, project) { 
       if(err) 
        res.send(err); 
       models.Media.find({'project_code' : project.code }, function(err, media) { 
        cb(null, {'project' : project, 'media': media}) 
       }); 
      }) 
     } 

     async.parallel([getProjectDetails], function(err, result) { 
      res.render('details', {data: result}); 
     }); 
    }); 

Wie man sehen kann ich alle Einträge aus der Media Sammlung finden will, wo project_code equals code von Project Sammlung.

Wie kann ich dies erreichen, ohne meine Mungo-Queries zu verschachteln?

+0

Ich glaube nicht, dass es für Sie arbeiten wird, haben Sie getestet? Sie rufen dieselbe Funktion ohne Änderungen auf – abdulbarik

Antwort

0

Warum brauchen Sie async in diesem? Ich hoffe, das wird funktionieren.

router.route('/project/:projectId') 
    .get(function(req, res) { 

     models.Project.findById(req.params.projectId, function(err, project) { 
      if(err) 
       return res.send(err); 
      models.Media.find({'project_code' : project.code }, function(err, media) { 
       if(err) 
        return res.send(err); 
       return res.render('details', {data: {'project' : project, 'media': media}}); 
      }); 
     }); 
});