我正在尝试从Sqilte DB中检索数据(使用NodeJ)。 我想在每行输入日志中打印。 出于某种原因,我没有收到错误,但我也没有得到结果。
我正在使用以下代码创建数据库:
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('usersDataBase');
db.run("CREATE TABLE IF NOT EXISTS usersTable (id INTEGER PRIMARY KEY AUTOINCREMENT , userName TEXT, password TEXT)");
db.close();
并使用以下代码添加用户:
var db = new sqlite3.Database('usersDataBase');
var stmt = db.prepare("INSERT INTO usersTable VALUES (null, ?, ?)", userName, passw);
stmt.finalize();
db.close();
最后,我正在尝试使用以下内容打印表格内容:
app.get("/view", function(req, res) {
var db = new sqlite3.Database('usersDataBase');
db.each("SELECT * FROM usersTable", function(err, row) {
if (err) console.log('Error: ' + err);
else console.log(row.userName + ": " + row.password)
//db.close();
});
//db.close();
// get to main screen
console.log('Sending main.html')
res.sendFile('main.html', {root: __dirname })
})
但我在屏幕上什么也没得到。 (没有错误信息,没有结果)
我做错了什么?
答案 0 :(得分:0)
是否可以在以下三种操作之一中使用错误对象显示错误:
var db = new sqlite3.Database('usersDataBase');
db.each("SELECT * FROM usersTable", function(err, row) {
if(err) console.error(err);
else console.log(row.userName + ": " + row.password);
});
一些暗示可能超出主题:
您的查询集可能会变得非常复杂,因此我建议您使用 promise 模块,以获取承诺机制,这可能会为您节省后期时间,并使代码在变得复杂时更具可读性。
promise.denodeify 将节点回调样式函数转换为promise,(回调函数有错误和结果参数的方法(顺序很重要)):
var promise = require('promise');
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('usersDataBase');
var dbEach = promise.denodeify(db.each);
dbEach("SELECT * FROM usersTable")
.then(onSelectFromUsersTableSuccess)
.catch(onSelectFromUsersTableError);
function onSelectFromUsersTableSuccess(row) {
// handle row
}
function onSelectFromUsersTableError(err) {
// handle error
}