Javascript Node.js Sqlite3(如果行存在)
是否有任何方法可以使用node.js和sqlite模块检查行是否存在。这个函数是我现在拥有的最好的函数,但是在异步模块之间它总是返回falseJavascript Node.js Sqlite3(如果行存在),javascript,node.js,sqlite,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 =
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;
}
有没有办法做到这一点
谢谢检查
行
的值,这是您查询的结果。根据您的数据库驱动程序,如果行不存在,您将获得[]
或null
我从来没有在node中使用过sqlite3
,但是您可以通过简单地搜索确定不存在的行来轻松检查值是什么
顺便说一句,您应该从回调中返回userExists
:
function(err, row) {
if (row != ...
return true;
userExists = true;
console.log(userExists)
});
因为数据库查询是异步的。但在代码中,您从回调外部返回的
userExists
总是在数据库查询完成之前发生。如果行存在,会发生什么情况?user exists的值应更改为true。在任何方面,我只想返回true,如果行存在异步调用,则不可能返回。我认为DB。没有返回行时,每个都不会执行,因此无法检查row变量。