我为我的服务器制作了一个事件监听器,用于监听某人何时尝试登录,所以我做了一个sql查询,然后如果信息匹配,它会记录它们上。问题在于,如果信息在运行查询之前匹配,那么它的测试将始终返回false。这里是我的代码函数在sql查询完成之前运行,节点js
player.on('checkLogin', function(data)
{
var logIn = "";
connection.query({
sql: "SELECT * FROM users WHERE username = ?",
values: [data.user] },
function(error, results, fields)
{
if (error)
{
console.log(error);
}
if(results)
{
var pass = "";
for (i = 0; i < results.length; i++)
{
pass = (results[i].password);
}
var input = crypto.createHash('md5').update(data.pass).digest("hex");
if (pass == input)
{
logIn = true;
}
}
});
if (logIn == true)
{
this.em.emit('login',
{
id: player.playerid
});
}
}.bind(this));
听说承诺会解决这个问题,但没有解决这个简单的方法?在此先感谢
这个问题一直在问。你需要在回调中回复*。只需用'logIn = true;'代替你想在底部运行的任何代码。 –
当它尝试登录时,我收到错误“can not read property'emit'undefined” –