从node.js中的sqlite数据库中的不同表获取所有数据

k10s72fa  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(434)

这是一种从数据库获取所有数据的方法吗?
到目前为止,我完成了从表中获取所有数据的工作:

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

但是如果有更多的table, 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 }));
  }

有办法把这些table都寄出去吗?



mrwjdhj3

mrwjdhj31#

如果您的所有表都有相同的列,或者至少可以将输出别名为相同的列名(如果列不在其中一个表中,则可以将其设为null),则可以使用 UNION 如:

SELECT id, name FROM table1 
 UNION 
   SELECT id, name FROM table2
 UNION 
   SELECT myid as id, test as name FROM table3

这样您就可以将所有这样的表附加到一个输出表中。另外,如果希望通过代码聚合,可以使用以下查询获取所有表名并处理每个表:

SELECT name FROM my_db.sqlite_master WHERE type='table';

相关问题