Javascript Node-sqlite3异步回调
我正在编写一个简单的脚本,从表中检索密码并在node.js中进行验证Javascript Node-sqlite3异步回调,javascript,node.js,sqlite,Javascript,Node.js,Sqlite,我正在编写一个简单的脚本,从表中检索密码并在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
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);
});
}
};
可能重复的