【发布时间】:2021-10-21 03:49:51
【问题描述】:
前言:我正在使用 typescript 和 node-pg(Postgres for node)来填充一组 promise,然后使用 Promise.all() 执行它们。
在遍历数字数组并将查询推送到数组时,如果我使用以下代码循环遍历数字数组,则会收到错误:
const gameIds = [1,2,3,4,5];
let queryArray = [];
const sql = 'select bettor, fader from wagers where game_id=$1';
gameIds.forEach((gameId: number)=> {
// populate the query array
queryArray.push(DatabaseOperations.dbConnection.query(sql, [gameId]));
});
let allWagersForGames = await Promise.all(queryArray);
在将 promise 数组的结果分配给 allWagersForGames 时,此代码给了我一个错误。错误状态:Variable 'queryArray' implicitly has an 'any[]' type.ts(7005)。
但是,当我按以下方式迭代数字数组时,没有出现错误,我不知道为什么。我不明白为什么更改迭代样式会影响是否出现先前的错误:
const gameIds = [1,2,3,4,5];
const sql = 'select bettor, fader from wagers where game_id=$1';
for (const gameId of gameIds) {
// populate the query array
queryArray.push(DatabaseOperations.dbConnection.query(sql, [gameId]));
}
// now retrieve all of the data
let allWagersForGames = (await Promise.all(queryArray));
【问题讨论】:
-
为什么不使用
WHERE game_id IN ( 1, 2, 3, 4, 5 )的单个查询?这样运行起来会快很多。 -
这是一个很好的观点,我仍在研究我的数据库技能,所以我会改变它。谢谢! @戴
-
第二个代码示例中
queryArray的声明是什么? -
同第一个
let queryArray = []
标签: typescript loops for-loop node-pg-pool