var express = require('express');
var app = express();
var sqlite3 = require('sqlite3');
var db = new sqlite3.Database('Items.db');
app.listen(3000, function(){
console.log('Server is listening on port 3000');
});
app.get('/', function(request, response){
db.all("SELECT * FROM Items WHERE id>1", function(err,rows,fields) {
console.log(rows);
console.log('This function will return a list of all stored items from database ' + rows);
response.setHeader('Content-Type','application/json')
response.send(JSON.stringify(rows));
});
});
但是浏览器什么都不是。
在将行记录到终端时,它显示未定义。
我认为这些行没有从数据库中获取结果。我认为数据库所在的路径可能有问题。你能告诉我把db文件放在哪里吗??或者还有什么问题??
最佳答案
可能的原因
您正在尝试在与 server.js
相同的目录中打开 Items.db
。目录中没有名为Items.db
的文件,因此创建了一个新的空数据库Items.db
。
改变
var db = new sqlite3.Database('Items.db');
到
var db = new sqlite3.Database('relative_path_to/Items.db');
其中 relative_path_to
是从 server.js
到 Items.db
的相对路径。
您可以通过将 Inputs.db
移动到与 server.js
相同的目录来获得相同的结果。
其他原因
Items.db
没有表 Items
。
确保 Items.db
有一个同名的表。
sqlite3 Items.db
sqlite> CREATE TABLE IF NOT EXISTS Items (id INTEGER);
sqlite> .exit
关于node.js - 我通过 Node js 将 sqlite3 查询结果作为 json 发送到浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50411135/