Ich habe einen Ereignis-Listener für meinen Server gemacht, der zuhört, wenn jemand versucht, sich anzumelden, also mache ich eine SQL-Abfrage und dann, wenn die Informationen übereinstimmen, protokolliert sie auf. Problem ist, es testet, wenn die Info übereinstimmt, bevor es die Abfrage ausführt, so dass es immer false zurückgibt. hier ist mein CodeFunktion wird ausgeführt, bevor SQL-Abfrage beendet ist, Knoten 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));
Ich habe gehört, verspricht dieses Problem beheben wird aber gibt es eine einfache Möglichkeit, dies zu umgehen ?, Vielen Dank im Voraus
Diese Frage wird die ganze Zeit gefragt. Sie müssen * innerhalb * des Rückrufs antworten. Ersetzen Sie einfach 'logIn = true;' mit dem Code, den Sie unten ausführen wollten. –
Ich bekomme den Fehler "kann Eigenschaft nicht lesen 'emit' von undefined", wenn es versucht, mich anzumelden –