2016-01-25 39 views
0

我正在應用程序上的NodeJs/Sails後端上工作。 我正在努力的功能是假設選擇所有遊戲(腳)在3天前結束3 &一個生成通知(實際)給遊戲的所有玩家,以通知他們的獎盃(最好&最壞的玩家遊戲)。無法在特定條件下獲得200響應

我剛剛添加了一個條件,以防止遊戲(腳)沒有任何獎盃時通知(實際)的生成。這是所有功能:

Foot.query("SELECT id FROM foot WHERE foot.date <'"+nowMinus3d+"' AND date >'"+nowMinus4d+"'", function(err, results){ 
    _.each(results.rows, function(result, err){ 
    Player.query("SELECT player.user, player.foot FROM player WHERE (player.statut = 2 OR player.statut = 3) AND player.foot ='"+result["id"]+"'", function(err, players){ 
     async.each(players.rows, function(player, callback){ 
     Trophe.findOne({foot: player["foot"]}).exec(function findOneCB(err, trophe){ 
      if (err) {console.log(err);} 
      if (trophe){ 
       console.log(trophe); 
       Actu.create({user:player["user"], related_user:player["user"], typ:'resultFoot', related_stuff: player["foot"]}).exec(function(err,actu){ 
       if(err){ 
        console.log(err); 
       } 
       else { 
        Connexion.findOne({user:player["user"]}).exec(function(err, connexion){ 
        if (connexion){ 
         sails.sockets.emit(connexion.socket_id,'notif',actu); 
         callback(); 
        } 
        else { 
         callback(); 
        } 
        }); 
       } 
       }); 
      } 
      else { 
      console.log("Personne n'a été élu sur ce foot") 
      } 
     }); 
     },function(){ 
     res.status(200).end(); 
     }) 
    }) 
    }) 
}) 

所以1)我選擇結束日3和4之間前足 2)我選擇鏈接到THES足球比賽 3玩家)對他們每個人我的產生ACTU如果足球比賽有我的路(async.each)的最後一個trophey 4),res.status(200).end();

如果我有一個trophey,一切都很好,我把我的200 RESP。但是,當沒有trophey,我得到我的console.log("personne n'a été élu sur ce foot")印刷,但我從來沒有得到我的200響應。

即使現在有獎盃,我是不是應該獲得200的迴應res.status(200).end();是async.each函數的回調?它不依賴於獎盃的存在。我究竟做錯了什麼 ?

回答

0

因爲您還沒有使用回調,所以異步無法完成。只需更改爲:

console.log("Personne n'a été élu sur ce foot"); 
callback();