javascript - sqlite3 回调 (node.js)

标签 javascript node.js sqlite

我正在尝试将我网站上输入的电子邮件与数据库中的电子邮件进行比较,看它是否已经存在。如果是,则该函数返回 false 并显示错误。

var db = new sqlite3.Database('users_db.db');

db.get(
    "SELECT * FROM users WHERE useremail = ?", 
    [email], 
    function (err, rows) {
        if (rows == undefined ){
            global.returnvalue2 = false;
        }
    }
);

我想要的是在选择后立即运行该函数,以便返回值为 false,并且不创建用户记录。

目前我意识到回调是在一切之后调用的,所以它只是进行选择并在程序的其余部分继续进行直到结束。

我如何检查是否有相同电子邮件的现有记录?

最佳答案

利用 javascript 中的异步功能,因此您的代码看起来像这样;

var db = new sqlite3.Database('users_db.db');
function checkemail(email, cb) {
    db.get(
         "SELECT * FROM users WHERE useremail = ?", 
         [email],  
         function (err, rows) {
            if (err || rows == undefined ){
                cb("bad email", null)
            } else {
                cb(null,rows)
            } 
         });
}
function checkpassword(pw,cb) {....}
function checkclass(cls,cb) {....}

然后像这样写你的代码;

checkemail(myemail, function(err,rows) {
    if (err) return alert(err);
    checkpassword(pw, function(err, msg) {
       if (err) return alert(err);
       checkclass(cls, function(err, msg) {
           if (err) return alert(err);
           alert("Congratulation you passed all the checks");
       });
    });
});

关于javascript - sqlite3 回调 (node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32551515/

相关文章:

ios - FMDB 检查是否为空方法并向前分离

javascript - ReactJS toLowerCase 不是函数

javascript - 如何禁用 JavaScript 中的 http-equiv 刷新?

Javascript 将用户的输入存储到二维数组中

node.js - 启动nodejs服务器时打开网页

c - SQLite 和安全 fork

Javascript:在对象中分配变量时命名函数的好处?

node.js - 向 module.exports 添加更多功能

javascript - 如何在特定的快速路线上设置不同的bodyparser

sqlite - 使用sqlite查找连续重复的数量