Hallo all Ich habe einen grundlegenden Nodesjs Server mit Express erstellt. Es gibt eine Login-Seite, auf der ein Benutzer gesendet wird, es prüft den Eintrag von der Sqlite3 DB. Meine Abfrage ist Callback-Funktion funktioniert nur, nachdem seine übergeordnete Funktion erledigt ist. Im folgenden Fall jedoch, da der Befehl db.each vom Db einige Zeit benötigt, gibt die Callback-Funktion nicht die gewünschte Ausgabe. Aber wenn ich eine Timeout-Funktion einstelle, gibt es eine passende Antwort.Javascript Rückruf
-Code snipped /* post request Userlogin Seite aufgerufen */
app.post('/userLogin',function(req,res){
checkLogin(req,function(){//using a callback
setTimeout(function(){//delaying the execution of this part**
if(userLoginStatus=='SUCCESS'){res.render('userLogin');}
else{res.send('Wrong credentials');}
},100);
});
});
function checkLogin(req,callback){
db.serialize(function(){
db.each("SELECT * from USERLOGIN where USERID ='"+req.body.userId+"'"+
" AND PASSWORD='"+req.body.password+"'",function(err,row){
if(row.USERID.length>0){userLoginStatus ='SUCCESS';}
else {userLoginStatus = 'UNSUCCESFUL';}
});
});
callback();
}
Wahrscheinlich werden Sie diese Anrufe ineinander verketten müssen. Sie sollten über asynchrone Javascript-Aufrufe mit Rückrufen lesen. Es wird interessant sein, auch über Versprechungen zu lesen :-) – flob