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