Javascript node.js/sqlite3 SELECT可以从命令行工作,但不能从js绑定工作

Javascript node.js/sqlite3 SELECT可以从命令行工作,但不能从js绑定工作,javascript,node.js,sqlite,Javascript,Node.js,Sqlite,使用命令行sqlite3实用程序: 我创建了一个表,如下所示: CREATE TABLE IF NOT EXISTS Security ( userId TEXT NOT NULL, totalHash TEXT NOT NULL, accessType TEXT NOT NULL, PRIMARY KEY (userId, totalHash) ); 然后插入1行 insert into Security (userId, totalHash, a

使用命令行sqlite3实用程序: 我创建了一个表,如下所示:

CREATE TABLE IF NOT EXISTS
Security (
  userId        TEXT NOT NULL,
  totalHash     TEXT NOT NULL,
  accessType    TEXT NOT NULL,
  PRIMARY KEY (userId, totalHash)
);
然后插入1行

insert into Security (userId, totalHash, accesstype) Values ('bill', '768caa1c468991cb0a0be1cf1d67f6783c56b529ef843e7e43870be1c75db9977c3cc0db6d4ea3a9c02ec542311180a49a85440ae1182dc6ab115ecdb240e208', 'login');

SELECT * FROM Security WHERE userID='bill' AND totalHash='768caa1c468991cb0a0be1cf1d67f6783c56b529ef843e7e43870be1c75db9977c3cc0db6d4ea3a9c02ec542311180a49a85440ae1182dc6ab115ecdb240e208' AND accessType='login' LIMIT 1;
userId      totalHash                                                                                                                         accessType
----------  ---------------------------------------------------------------------------------------------                                     ----------
bill        768caa1c468991cb0a0be1cf1d67f6783c56b529ef843e7e43870be1c75db9977c3cc0db6d4ea3a9c02ec542311180a49a85440ae1182dc6ab115ecdb240e208  login     
node.js中的JavaScript代码执行相同的选择:

if (debug) {console.log('userId=' + userId + ', totalHash=' + totalHash);}
Db.get("SELECT * FROM Security WHERE userID=? AND totalHash=? AND accessType='login' LIMIT 1", true, userId, totalHash,
   function (error, row) {
      if (error !== null) {
         if (debug) {console.log(error);}
         res.writeHead(401, {'Content-Type': 'text/plain'});
         res.end('Invalid login');
      } else {
         res.writeHead(200, {'Content-Type': 'text/plain'});
         res.end('Login OK');
      }
   }
);
返回以下内容:

userId=bill, totalHash=768caa1c468991cb0a0be1cf1d67f6783c56b529ef843e7e43870be1c75db9977c3cc0db6d4ea3a9c02ec542311180a49a85440ae1182dc6ab115ecdb240e208
{ [Error: SQLITE_RANGE: bind or column index out of range] errno: 25, code: 'SQLITE_RANGE' }

它可以从命令行工作,但不能通过JS到sqlite绑定。知道为什么吗?

在第二行试试这个

 Db.get("SELECT * FROM Security WHERE userID=? AND totalHash=? AND accessType='login' LIMIT 1", [userId, totalHash],

成功了。谢谢你消除了这个错误,但是现在它没有返回任何东西。row变量始终未定义。我甚至尝试了命名参数方法,它也不会产生错误,但仍然不会产生任何输出。在API中列出的3种指定调用的方法中,我的第一次尝试出错,其余两种方法不产生输出。存在差异的事实似乎表明绑定代码存在问题。它在我的电脑中确实有效。当存在匹配项时,row=[object object],当不存在匹配项时,row=undefined。