gpt4 book ai didi

javascript - Node-sqlite3异步回调

转载 作者:行者123 更新时间:2023-12-03 11:40:09 25 4
gpt4 key购买 nike

我正在编写一个简单的脚本来从表中检索密码并在 node.js 中进行验证,这是脚本

module.exports = {
login: function (email, pass) {
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('test.db');

db.get("SELECT password FROM users WHERE user_email = ?", email, function(err, row) {
if (err !== null) {
console.log("An error has occured");
return "error";
} else if(row.password === pass) {
console.log("success");
return "success";
} else {
console.log("Incorrect password");
return "failure";
}
});
}
};

评估 if else 情况时,控制台日志语句是正确的。但是返回值是未定义的。我不明白如果日志记录正确完成,为什么返回值未定义。

最佳答案

您不能从回调中返回值,因为这样做毫无意义。您必须将回调传递给 login() 函数,并在 db.get() 内使用 (err, result) 调用该函数回调:

module.exports = {
login: function (email, pass, cb) {
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('test.db');

db.get("SELECT password FROM users WHERE user_email = ?",
email,
function(err, row) {
if (err)
return cb(err);

cb(null, row.password === pass);
});
}
};

关于javascript - Node-sqlite3异步回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26324837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com