初学node,想用express + sqlite3 做一个小项目,没想到在用 sqlite3 的时候查询出了问题 ###环境如下
- OS win64
- node v0.10.28
- sqlite3 2.2.3 ###表结构: table : todo id : int pk title : varchar(100) ###已有数据: id title 1 起床 2 洗刷
###nodejs 代码
var sqlite3 = require(‘sqlite3’).verbose(); var db = new sqlite3.Database(‘todo.db’); db.all('select title from todo’,function(err,rows){
rows.forEach(function(row){
console.log(row.title);
}); });
这样结果 是 2行 空,如果把title 换成 id 则能正确打印 为 1 2
请教一下各位大侠这种情况如何解决?
3 回复
你可以先找个工具看看你的数据库里面的数据是否是正常的。
下面的代码是可以正常工作的。
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database(':memory:');
// 或者
// var db = new sqlite3.Database('todo.db');
db.serialize(function() {
// 建表
db.run("CREATE TABLE IF NOT EXISTS todo (title TEXT)");
// 插入数据
var stmt = db.prepare("INSERT INTO todo(title) VALUES (?)");
stmt.run('起床');
stmt.run('洗刷');
stmt.finalize();
db.all("SELECT rowid AS id, title FROM todo", function(err, rows) {
console.log(rows); // [ { id: 1, title: '起床' }, { id: 2, title: '洗刷' } ]
rows.forEach(function (row) {
console.log(row.title);
});
});
// 或者
// db.each("SELECT rowid AS id, title FROM todo", function(err, row) {
// console.log(row.id + ": " + row.title);
// });
});
db.close();