【发布时间】:2020-10-15 08:27:12
【问题描述】:
与 pg-promise transaction with dependent queries in forEach loop gives warning Error: Querying against a released or lost connection 相关,我现在正尝试从地图函数中返回多个查询
const {db} = require('../db')
async function get(id) {
return await db
.task(async t => {
const items = await t.any(`SELECT i.* FROM item i WHERE i.parent_id = $1#`, id)
const itemDetails = items.map(async item => {
const layers = await t.any(`SELECT l.* FROM layer l WHERE l.item_id = $1#`, item.id)
const bases = await t.any(`SELECT b.* FROM base b WHERE b.item_id = $1#`, item.id)
return [layers, bases]
})
// Not resolving properly!
await t.batch(itemDetails.flat())
return {items: items, itemDetails: itemDetails}
})
.then(data => {
return {success: true, response: data}
})
.catch(error => {
return {success: false, response: error.message || error}
})
}
但是,我不确定如何正确解决多个查询(层和基)。如果我返回一个或另一个,根据链接的问题,我可以在继续之前批量解决一系列承诺。但是,在每次地图迭代中返回多个查询时,我不确定如何在继续之前正确解决所有问题。
【问题讨论】:
标签: node.js postgresql pg-promise