Javascript 从Node.js中的SQLite数据库中的不同表获取所有数据
这是一种从数据库获取所有数据的方法吗 到目前为止,我完成了从表中获取所有数据的工作:Javascript 从Node.js中的SQLite数据库中的不同表获取所有数据,javascript,sql,node.js,sqlite,Javascript,Sql,Node.js,Sqlite,这是一种从数据库获取所有数据的方法吗 到目前为止,我完成了从表中获取所有数据的工作: router.get('/', function (req, res, next) { db.serialize(function () { db.all('SELECT id, name, surname FROM Table1', function ( err, rows ) { return res.send(rows); }); });
router.get('/', function (req, res, next) {
db.serialize(function () {
db.all('SELECT id, name, surname FROM Table1', function (
err,
rows
) {
return res.send(rows);
});
});
db.close();
});
但是如果有更多的表,例如,Table1
、Table2
和Table3
试图将所有查询放入db.all调用似乎不起作用
router.get('/', function (req, res, next) {
db.serialize(function () {
db.all('SELECT id, name, surname FROM Table1, SELECT date, city FROM Table2, SELECT person, year FROM Table3', function (
err,
rows
) {
return res.send(rows);
});
});
db.close();
});
更新
这些是表格,我如何获取它们的所有数据并将其发送到前端?这就是我想做的
我更希望它们像前端中的单独表一样,在前端调用时如下所示:
callAPI() {
fetch('http://localhost:9000/testAPI')
.then((res) => res.text())
.then((res) => this.setState({ apiResponse: res }));
}
有没有办法发送所有这些表格
如果您的所有表都有相同的列,或者至少可以将输出别名为相同的列名(如果列不在其中一个表中,则可以将其置为空),则可以使用
UNION
例如:
通过这种方式,您可以将所有此类表附加到单个输出表中。此外,如果希望通过代码聚合,可以使用以下查询获取所有表名并处理每个表:
SELECT name FROM my_db.sqlite_master WHERE type='table';
刚刚更新了问题,表的列名不同。我试过使用
UNION
和UNION ALL
但它不返回任何数据。您必须为列输出使用别名,使用AS
确保每个表的列名都是一些。如果表完全不同,我建议使用第二种方法。顺便说一句,你的第700个进球太棒了!:)看看我的示例查询的表3,我是这样做的:`“从ocs_运动员.sqlite_master中选择名称,其中type=“table”`,我的数据库的名称是ocs_运动员
。错了吗?因为它仍然不显示任何内容,所以您可以嵌套多个db.all调用,将下一个调用放入上一个调用的回调function(){}
部分。如果您的代码一直向右缩进,您就可以正确地执行此操作。调用res.send仅在最后一个。。。只有当您只有几个表并且事先知道如何处理查询时,这才有帮助。如果要向数据库请求表列表,然后对其执行操作,则会变得更复杂。具体来说,您需要一种异步迭代的方法。您可以这样做,避免使用node的async
库或Promise.all
嵌套回调,前提是您的框架理解promises。我使用的是node.js,所以我猜Promise.all
工作正常。我用表格更新了问题,我不明白为什么不起作用。发送一张表很好,但发送所有表都不起作用
SELECT name FROM my_db.sqlite_master WHERE type='table';