【发布时间】:2020-11-02 09:05:31
【问题描述】:
这是一种从数据库中获取所有数据的方法吗?
到目前为止,我已经完成了从一个表中获取所有数据:
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 }));
}
有没有办法发送所有这些表格?
【问题讨论】:
-
因此您可以嵌套多个 db.all 调用,将下一个调用放在前一个的回调
function(){}部分中。如果您的代码一直向右缩进,那么您的操作是正确的。仅在最后一个调用 res.send ......这只有在您只有几张表并且提前知道查询方式时才有帮助。如果您想向数据库询问表列表,然后对其进行操作,它会变得更加复杂。具体来说,您需要一种异步迭代的方法。您可以这样做并避免使用节点的async库或Promise.all如果您的框架理解 Promise 来嵌套回调。 -
我正在使用 Node.js,所以我猜
Promise.all工作正常。我用表格更新了问题,我不明白为什么它不起作用。发送一张表可以正常发送,但发送它们都不起作用
标签: javascript sql node.js sqlite