Ich versuche, "wahr" von Hash zu erhalten vergleichen. aber ein Problem tritt auf, wenn ich einen Benutzernamen schreibe, der nicht in der Datenbank existiert. Zum Beispiel: wenn es keine "jack.33" als Benutzername gibt, wirft es mysql Fehler und stoppt den Server. Wie kann ich diesen Fehler blockieren oder eine Lösung erstellen? Hier ist der Fehler:Node.js "/ Login" DB Fehler
throw err; // Rethrow non-MySQL errors
^
TypeError: Cannot read property 'password' of undefined
app.post("/login", function(request, response) {
var username = request.body.username;
var pass = request.body.pass;
con.query("select password from user where username = " + "\"" + username + "\"",function (err, result) {
if(err) throw err;
var passer = result[0].password;
bcrypt.compare(pass, passer, function (err, res) {
console.log(res);
if (res === true) {
response.send("success")
}else{
response.send("nop")
}
});
});
});
Sie müssen überprüfen, ob das Array "result" tatsächlich Zeug enthält. Die Abfrage kann erfolgreich ausgeführt werden, erzeugt jedoch null Zeilen. – tadman
Es sieht so aus, als ob Sie diesen Fehler direkt nach der Abfrage selbst auslösen. Fangen Sie ihn irgendwo auf? –
@tadman Ich überprüfe es mit, wenn Bedingung, aber ich kann den Fehler nicht stoppen, gibt es eine Möglichkeit, den Code nach if (result === null) Bedingung zu stoppen? –