在node.js中运行sqlite3查询会返回“undefined”行,没有错误

时间:2015-11-06 05:32:24

标签: node.js sqlite

Node.js 4.2.1sqlite3 3.1.1一起使用以下代码 -

var sqlitedb = new sqlite3.Database(sqliteFilename);
sqlitedb.serialize(function() {

   sqlitedb.run("SELECT ZDATA FROM ZMYTABLE;", function(err, rows) {
      console.log(rows);
   });

});
sqlitedb.close();

在控制台中打印undefined,但如果使用sqlite3工具执行相同的查询,则可以正常工作 -

$ sqlite3 backup.sqlite 
SQLite version 3.8.10.2 2015-05-20 18:17:19
Enter ".help" for usage hints.
sqlite> SELECT ZDATA FROM ZMYTABLE;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
...

知道为什么SQL在Node.js中返回undefined行?

2 个答案:

答案 0 :(得分:2)

方法run()不返回值,并且在回调中,只返回错误。

要获取数据,您应该使用get()all()

这将完美地运作:

// create smartbutton
$('nav').before('<div id="smartbutton"></div>');
$('#smartbutton').append('<div class="buttonline"></div>');
$('#smartbutton').append('<div class="buttonline"></div>');
$('#smartbutton').append('<div class="buttonline"></div>');

// add click listener
$('#smartbutton').click(function(event) 
{
  $('nav').animate({height:'toggle'},200);
});

答案 1 :(得分:0)

sqlite3 3.1.1不支持Node.js 5.0.0。我们应该等待更新sqlite3。