如果行存在,Node.js Sqlite3

时间:2014-03-23 07:13:13

标签: javascript node.js sqlite

有没有办法使用node.js和sqlite模块检查是否存在行。这个函数是我现在最好的,但它总是在模块之间返回false是异步的

function auth(uname, pwd) {
    var userExists = false;
    authDB.serialize(function() {
        authDB.each("SELECT * FROM Users WHERE username = '" + uname + "' AND password = '" + pwd + "' LIMIT 1)", function(err, row) {
            userExists = true;
            console.log(userExists)
        });
    });
    return userExists;
}

有没有办法做到这一点?

由于

1 个答案:

答案 0 :(得分:1)

检查row的值,这是您查询的结果。根据您的数据库驱动程序,如果该行不存在,您将获得[]null

我从未在节点中使用sqlite3,但您可以通过简单地搜索肯定不存在的行来轻松检查值是什么。

顺便说一下,你应该从回调中返回userExists

 function(err, row) {
        if (row != ...
             return true;
        userExists = true;
        console.log(userExists)
    });

因为数据库查询是异步的。但是在您的代码中,您将从回调之外返回userExists,该回调将始终早于数据库查询完成。