Node.js 无法在特定条件下获得200响应

Node.js 无法在特定条件下获得200响应,node.js,sails.js,response,Node.js,Sails.js,Response,我正在一个应用程序的NodeJs/Sails后端上工作。 我正在努力使用的功能是选择3&4天前结束的所有游戏(足部),并向游戏中的所有玩家生成通知(actu),通知他们奖杯(游戏中最好和最差的玩家) 我刚刚添加了一个条件,以防止在游戏(foot)没有任何奖杯时生成通知(actu)。这是all函数: Foot.query("SELECT id FROM foot WHERE foot.date <'"+nowMinus3d+"' AND date >'"+nowMinus4d+"'",

我正在一个应用程序的NodeJs/Sails后端上工作。 我正在努力使用的功能是选择3&4天前结束的所有游戏(足部),并向游戏中的所有玩家生成通知(actu),通知他们奖杯(游戏中最好和最差的玩家)

我刚刚添加了一个条件,以防止在游戏(foot)没有任何奖杯时生成通知(actu)。这是all函数:

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();
      })
    })
  })
})
Foot.query(“从Foot中选择id,其中Foot.date'”+nowmus4d+“”,函数(err,results){
_.each(results.rows,函数(result,err){
Player.query(“从Player WHERE(Player.statut=2或Player.statut=3)中选择Player.user、Player.foot,Player.foot=”+结果[“id”]+”,函数(err,players){
async.each(player.rows,函数(player,回调){
findOne({foot:player[“foot”]}).exec(函数findOneCB(err,trophoe){
if(err){console.log(err);}
国际单项体育联合会(奖杯){
控制台日志(trophe);
创建({user:player[“user”],related_user:player[“user”],typ:'resultFoot',related_stuff:player[“foot”}).exec(函数(err,Actu){
如果(错误){
控制台日志(err);
}
否则{
findOne({user:player[“user”]}).exec(函数(err,Connexion){
if(连接){
sails.sockets.emit(connexion.socket\u id,'notif',actu);
回调();
}
否则{
回调();
}
});
}
});
}
否则{
console.log(“脚底上的n'aétélu人员”)
}
});
},函数(){
res.status(200.end();
})
})
})
})
因此1)我选择了3到4天前结束的脚 2) 我选择链接到这些足球比赛的球员 3) 如果足球比赛有奖杯,我会为每个人生成一个Actu 4) 在我的循环(
async.each
)的末尾,
res.status(200.end()

如果我有一个奖杯,一切都很好,我得到我的200分。但是当没有奖杯时,我会打印出我的
console.log(“personne n'aétélu sur ce foot”)
,但我从来没有收到我的200回复


即使现在有
res.status(200.end())这样的奖杯,我是否应该得到200个响应
是async.each函数的回调吗?它不依赖于奖杯的存在。我做错了什么?

因为您没有使用回调,所以异步无法完成。只需更改为:

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