Node.js SQLite get语句无返回,回调函数未执行求助
解决Node.js SQLite
db.get() 回调未触发的问题 嘿,一眼就瞅出你代码里的关键问题了——语法错误把回调函数给排除在db.get()的参数范围之外了!
你现在的代码片段:
db.get("SELECT Username FROM Authentication"), function(err,row) { console.log('test') }
看到那个多余的右括号没?你提前把db.get()的调用给闭合了,后面的回调函数变成了一个孤零零的独立匿名函数,根本没被绑定到db.get()上,自然不会被触发执行。
正确的写法应该把回调函数作为db.get()的第二个参数,放在方法的括号内部:
var sqlite3 = require('sqlite3').verbose(); var db = new sqlite3.Database('./books.db'); function authenticate(){ db.get("SELECT Username FROM Authentication", function(err, row) { console.log('test'); // 这里可以正常处理查询结果和错误了 if (err) { console.error(err.message); return; } console.log('查询结果:', row); }); } // 别忘了调用函数哦! authenticate();
另外补充两个小提醒:
- 确认你的
books.db数据库文件存在,且里面确实有Authentication表,不然就算语法修正后,也可能因为找不到数据库/表出现错误(不过你当前的核心问题是回调没触发,先搞定语法再说) - 一定要调用
authenticate()函数,只定义不执行的话,db.get()也不会启动查询的
内容的提问来源于stack exchange,提问作者Micha
相关产品推荐
相关产品推荐

