首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点-sqlite3 3异步回调

节点-sqlite3 3异步回调
EN

Stack Overflow用户
提问于 2014-10-12 11:54:09
回答 1查看 1.1K关注 0票数 0

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

代码语言:javascript
复制
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 cases情况时,控制台日志语句是正确的。但是,返回值未定义。我不明白为什么返回值是未定义的,如果日志记录是正确的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-12 14:30:45

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

代码语言:javascript
复制
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);
    });
  } 
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26324837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档