node.js - 我通过 Node js 将 sqlite3 查询结果作为 json 发送到浏览器

标签 node.js database web sqlite

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));


});

});

但是浏览器什么都不是。

在将行记录到终端时,它显示未定义。

terminal screenshot

我认为这些行没有从数据库中获取结果。我认为数据库所在的路径可能有问题。你能告诉我把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.jsItems.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/

相关文章:

javascript - 使用纯文本而不是提及来定义用户

mysql - MYSQL 插入数据库 MyISAM 速度慢

mysql - 在MySQL中使用外键从另一个表的列中选择数据

sql - 不是 GROUP BY 表达式

css - 列表中图像的垂直对齐

javascript - 使用后备图像预防 PhotoSwipe 404

javascript - 仅提供请求的内容范围

javascript - 配置 Express 和 Angular

node.js - 如何在 Node.js 中触发超时功能?

database - 适用于中小型流量站点和 Silverlight 的良好数据库解决方案