2016-08-22 8 views
0

次のコードでは、q.jsを使用して生徒の詳細を取得しています。フェッチされたカテゴリと都市が変数studentdetailsにマップされていないことを除いて、すべてが正しく機能します。それは、メールクエリによって取得された詳細(名前、電子メール、id、dob)のみを含んでいます。どこが間違っていますか?どんなリードも高く評価されます。q.js約束の使用中の問題

//fetches category of student 
var getJobCategories = function(student) { 
      var deferred = Q.defer(); 
      var categoryquery = 'select c.name,c.id from category c,student_category sc where xxxx'; 
      db.query(categoryquery, function(err, categories, fields) { 
       if(categories.length == 0) { 
        student.categories = "NA"; 
       } else { 
        student.categories = categories; 
       } 
       console.log(student)//prints details with categories 
       deferred.resolve(); 
      }); 
      return deferred.promise; 

     } 
//fetches city of student 
     var getCurrentCity = function(student) { 
      var deferred = Q.defer(); 
      var cityquery = 'select l.name,l.id from location l ,student_location sl where xxxx'; 
      db.query(cityquery, function(err, city) { 
       if(city.length == 0) { 
        student.currentcity = "NA"; 
       } else { 
        student.currentcity = city;  
       } 
       console.log(student)//prints details with city 
       deferred.resolve(); 
      }); 
      return deferred.promise; 

     } 

     var query='select name,email,id,dob from student limit 1,10'; 
     db.query(query, function(err1, studentdetails) { 
      var promise1=studentdetails.map(function(student){ 
      var result=getJobCategories(student) 

       }); 
       var promise2=studentdetails.map(function(student){ 
         getCurrentCity(student) 
       }); 

      var allpromises= Q.all([ 
       promise1,promise2 

      ]); 

      Q.allSettled(allpromises) 
       .then(function (results) { 
          next(null,{ 
         result: studentdetails, 
         msg: "Fetched successfully" 
        });  
       });//then 
     });//query 
+0

をあなたの.MAP無名関数は 'undefined'(ノーreturn文) –

+0

@JaromandaXを返している:どのように私はそれを修正しますか? –

+0

それらの関数呼び出しによって返された値を返す*かも​​しれません - しかし、一般的にコードはかなり複雑で畳み込まれている必要があります –

答えて

1

あなたはこの試みることがあります。

db.query(query, function(err1, studentdetails) { 
      var allStudentJobCategories = 
       studentdetails.map(function(student){ 
        return getJobCategories(student) 
       }); 

      var allStudentCities = 
       studentdetails.map(function(student){ 
        return getCurrentCity(student) 
       }); 

      var allpromises= Q.all([ 
       Q.all(allStudentJobCategories), Q.all(allStudentCities) 
      ]); 

      Q.allSettled(allpromises) 
       .then(function (results) { 
         next(null,{ 
        result: studentdetails, 
        msg: "Fetched successfully" 
       });  
      });//then 
    }); 
+0

ありがとう!出来た。あなたは私の一日を救った。 –

関連する問題