【发布时间】:2020-06-23 01:41:55
【问题描述】:
我想做的是:
- 使用 map 函数遍历对象数组
- 根据对象运行多个 SQL 查询
- 使用对象附加查询结果
我正在遍历作为对象数组的 offer。我得到了与 offer 相关联的 free_item 和 buy_item。我正在使用 knexjs 用于带有 nodejs 的 postgresql 数据库
这是实际代码:
offers = await Promise.all(offers.map(async offer => {
free_item_id = await db("offer_free_items").where({"offer_free_items.offer_id":offer.id}).select(["item_id"]).first()
console.log("-----------------debug line 1------------------")
buy_item_id = await db("offer_buy_items").where({"offer_buy_items.offer_id":offer.id}).select(["item_id"]).first()
console.log("-----------------debug line 2-------------------")
offer["free_item_id"] = get_item_id
offer["buy_item_id"] = buy_item_id
return offer
}))
问题是它没有按正确的顺序运行。输出的顺序是
- 调试线 1
- 调试线 1
- 调试第 2 行
- 调试第 2 行
正确的顺序应该是这样的:
- 调试线 1
- 调试第 2 行
- 调试线 1
- 调试第 2 行
【问题讨论】:
标签: sql node.js postgresql async-await