如何异步查询多条SQL?

Posted

技术标签:

【中文标题】如何异步查询多条SQL?【英文标题】:How to query multi SQL asynchrously? 【发布时间】:2020-04-20 08:09:23 【问题描述】:

我正在用 nestjs 和 typeorm 构建 webapp,

我想知道下面的代码实际上是做什么的?

const r1 = await this.connection.query(sqlA)
const r2 = await this.connection query(sqlB)

是先查询sqlA,得到结果,再查询sqlB,得到结果是同步的吗?

我想异步查询多个 sql,

const  _q1 = this.connection.query(sqlA)
const  _q2 = this.connection.query(sqlB)
const r1 = await _q1
const r2 = await _q2

这种方式正确吗?

【问题讨论】:

【参考方案1】:

这种方式对我来说似乎是正确的。这是因为您首先调用了两个 query 函数,这两个函数返回承诺,然后等待。

第一个脚本的顺序是“调用查询函数”->“等待解析”->“调用另一个查询函数”->“等待解析”。

您可以使用Promise.all 并行调用多个 Promise。这确保了您所追求的结果。

const [r1, r2] = Promise.all([this.connection.query(sqlA), this.connection.query(sqlB)])

【讨论】:

以上是关于如何异步查询多条SQL?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Discord 机器人异步等待对多条消息的反应?

如何编写异步LINQ查询?

解决数据库高并发访问瓶颈问题

在 Vertx (Vert.x 3) 中异步运行多个 Sql 查询

Java异步MySQL查询

node.js 异步使用 SQL