Получить все данные таблиц из базы данных SQLite, используя Node.js - PullRequest
1 голос
/ 13 июля 2020

Имея БД с несколькими таблицами, мне удалось получить это для одной таблицы за раз, а также получить имена таблиц.

Однако получить данные для всех не получается таблицы.

Это код для получения имен таблиц, который отлично работает:

var express = require('express');
var router = express.Router();
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('./db/ocs_athletes.db');

router.get('/', function (req, res, next) {
  db.serialize(function () {
    db.all(
      'SELECT name FROM sqlite_master WHERE type="table"',
      function (err, rows) {
        return res.send(rows);
      }
    );
  });
});

module.exports = router;

он возвращает массив такой формы:

[{"name":"Athlete"},{"name":"Game"},{"name":"AthletePhoto"},{"name":"AthleteResult"}]

Я не знаю, как получить данные из этих таблиц, я сделал forEach через элементы и создал запрос для каждой таблицы и сохранил данные в результате, но не работает как есть.

router.get('/', function (req, res, next) {
  db.serialize(function () {
    db.all(
      'SELECT name FROM sqlite_master WHERE type="table"',
      function (err, rows) {
        const result = [];
        rows.forEach(
          (table) => db.all('SELECT * FROM ' + table.name),
          function (err, innerRows) {
            result.push(innerRows);
          }
        );
        return res.send(result);
      }
    );
  });
});

module.exports = router;

Результат: []. Я полагаю, это должно быть написано таким образом, чтобы он ждал, пока БД будет прочитан, но я не уверен.

Есть предложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...