Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node-sqlite3异步回调_Javascript_Node.js_Sqlite - Fatal编程技术网

Javascript Node-sqlite3异步回调

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

我正在编写一个简单的脚本,从表中检索密码并在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);
    });
  } 
};
可能重复的