ich keine Ahnung bekommen, warum ich das Versprechen nicht richtig Kette kann, hier ist mein CodeKann nicht-Kette das Versprechen
app.post('/login', urlencodedParser, async (req, res) => {
// authenticate is async function that return promise
model.authenticate(req.body.uname, req.body.pword)
.then(function (result) {
console.log(result);
// ... some codes
});
});
// here is the function authenticate
async function authenticate(uname, pword) {
User.find({username: uname}, 'password', function (err, result) {
if (err !== null){
return new Promise(function (resolve, reject) {
resolve(false);
});
}
else{
if (pword === result[0].password){
console.log("Correct Password!");
return new Promise(function (resolve, reject) {
resolve(true);
});
}
Aber der Ausgang in meiner Konsole ist
undefined
Correct Password!
, die geben Sie an, dass .then() implementiert wird, bevor die Authentifizierung abgeschlossen ist. Also wie kann ich es besser kodieren? vielen Dank!
@ 31piy Eine asynchrone Funktion muss nicht unbedingt abgewartet werden. –
'Funktion authenticate' gibt nichts zurück, folglich, weil es' async Funktion authenticate' ist, wird es ein Versprechen zurückgeben, das auf 'undefined' aufgelöst wird - was Sie sehen –
Thz alles, ich habe es – JACKY