2016-05-25 6 views
0

私はAngular jsとSailsを使ってWebアプリケーションを開発しています。今、私は結果を得た各戻り応答を実行すると、私の背中Node(sails js)の単一の関数から複数の応答を返します

getAllCountMyProfile: function(req,res){ 
UsertokenService.checkToken(req.get('user-token'), function (err, tokenCheck) { 
var userId = tokenCheck.tokenDetails.userId; 
var query = "select (select count(*) FROM review WHERE userId="+ userId +" AND approvalStatus = 'approved') AS reviewReceived ,"+ 
     " (select count(*) FROM review WHERE reviewerId="+ userId +") AS reviewPenned, "+ 
     "(select count(*) FROM photos WHERE userId="+ userId +" AND accessType='private' AND status='active') AS privatePhotoCount, "+ 
     "(select count(*) FROM photos WHERE userId="+ userId +" AND accessType='public' AND status='active') AS publicPhotoCount"; 
Review.query(query, function (err, photoReviewCount) { 
     if(err){ 
      console.log("Error"+ err); 
     } 
     else{ 

      return res.json(200, {status:4, message:'success',data1:photoReviewCount}); 
     } 
    }); 
UserService.checkVideoLimit(userId, function (err, videoCount) 
     { 

     var noVideos=videoCount.data; 
     console.log("Video count "+noVideos); 
     return res.json(200, {status: 1, data2: videoCount}); 

    }); 
var query="SELECT sum(rating) AS totalRating,COUNT(*) AS totalCount FROM review where userId=" +userId+ ""; 
     Review.query(query, function (err, avgRating) { 
     if(err){ 
      console.log("Error"+ err); 
     } 
     else{ 
      var rating=JSON.stringify(result); 
      var totalRating=result[0].totalRating; 
      var count=result[0].totalCount; 
      var avgRatingValue=(totalRating/count).toFixed(2); 
      console.log(totalRating,count); 
      console.log("avgRating"+rating); 
      return res.json(200, {status:4, message:'success',data3:avgRating}); 
     } 
    }); 
    });` 
} 

を参照してくださいdatabase.Plz異なるカウント値を表示するメニューがあるissue.In自分のアプリケーションで打ちました。上記のクエリを実行すると、コンソールでエラーメッセージが表示される "送信後にヘッダーを設定できません。" 結果data1、data2、data3が必要です。これを得るための解決策は何ですか?

答えて

0

応答を複数回設定することはできません。 res.writeを使用してクエリのレスポンスを編集し、res.end()でレスポンスを送信するか、レスポンスを一度だけ送信するようにコードを変更することができます。このようなもの:

res.status(200).json({ 
    "data":{ 
      "data1":photoReviewCount, 
      "data2":videoCount, 
      "data3":avgRating 
      } 
}) 
+0

これは問題なく動作しています – sulu666

関連する問題