2015-11-06 44 views
0

使用Node.js 4.2.1sqlite3 3.1.1下面的代碼 - 在控制檯運行在Node.js的回報`undefined`行sqlite3的查詢,並沒有錯誤

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行?

+0

你檢查,如果代碼返回一個錯誤? – Andrius

+0

是的,'err == null' – Kof

+0

您是否嘗試從查詢字符串中刪除分號?我不希望它會導致錯誤,但它不應該在那裏。 –

回答

1

方法run()不會返回值,並且在回調中只會在發生錯誤時返回錯誤。

要獲取數據,您應該使用get()all()

這將很好地工作:

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

sqlite3 3.1.1不支持Node.js 5.0.0。我們應該等待更新sqlite3。

+0

它也發生在'Node.js 4.2.1'中。 – Kof

+0

'sqlite3模塊適用於Node.js v0.10.x,v0.12.x,v0.4.x和v0.5.x. –