从mongoDB嵌套查询返回数据

时间:2013-05-06 05:29:10

标签: node.js mongodb express

从嵌套查询返回数据的方法是什么?

我将多个函数调用合并为一个单独的模块, 我有以下代码

  retrieveStudentSessions: function(req, res, callback){
     MongoClient.connect(config.mongoPath+config.dbName, function(err, db) {
       if(err){
         return callback(new Error("Unable to Connect to DB"));
       }
      var collection        = db.collection(config.userList);
      var sessionCollection = db.collection(config.session);
      var templateCollection = db.collection(config.template);
      var tempSession  = {session:[], templates:[]};

      //Obtain UserID
      collection.find({'email' : req.user['_json'].email}).nextObject(function(err, doc) {
          if(err){
                return callback(new Error("Error finding user in DB"));
          } 
          //Search Session collection for userID
            sessionCollection.find({ $or : [{'studentsB' : doc['userid']},{'studentsA' : doc['userid']}]}).each(function(err, doc) {
              if(err){
                  return callback(new Error("Error finding user in DB"));
              }  
                  //Update JSON
                  tempSession.session.push(doc);
                  //Query for Template Title using Template ID from Session Collection
                  templateCollection.find({'_id' : doc['templateId']}).nextObject(function(err, doc){
                    if(err){
                          return callback(new Error("Error finding user in DB"));
                    } 
                    //Update JSON
                    tempSession.templates.push(doc);
                  });
            });
        return callback(null, tempSession);
      });
    });
  }

来电者功能

dbCall.retrieveStudentSessions(req, res, function(err, result){
                if(err){
                    console.log(err);
                    return;
                }
                console.log(result);
            });

当我尝试返回变量undefined is not a function时,上面的代码返回错误tempSession。单个查询同样可以正常工作。在涉及嵌套查询时,是否有任何特定的返回方法?

0 个答案:

没有答案