Имея БД с несколькими таблицами, мне удалось получить это для одной таблицы за раз, а также получить имена таблиц.
Однако получить данные для всех не получается таблицы.
Это код для получения имен таблиц, который отлично работает:
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;
Результат: []
. Я полагаю, это должно быть написано таким образом, чтобы он ждал, пока БД будет прочитан, но я не уверен.
Есть предложения?