【发布时间】:2021-08-15 14:55:10
【问题描述】:
我在这里查看另一个 SO 线程:async/await with loop 并想对我的代码做类似的事情,但不幸的是我看不到错误是什么。
这里的groups 值是一个取自req.body.allGroups 的数组。它似乎根本没有在我的 my_groups postgres 表中执行任何插入操作。
app.post("/create-group", async (req, res) => {
try {
const groups = req.body.allGroups;
console.log(groups);
for (const group of groups) {
console.log(group.groupName);
let newGroup = await pool.query(
"INSERT INTO my_groups (id, group_name) VALUES($1, $2) RETURNING group_id",
[ 99, group.groupName ]
);
res.json(newGroup.rows[0]);
}
} catch(err) {
console.error(err.messasge);
}
})
>>> 更新:
我已根据以下查询更新了我的代码,还添加了 console.log 消息。
运行上述更新代码后的console.log输出如下:
[
{
groupName: 'G1'
},
{
groupName: 'G2'
}
]
G1
undefined
【问题讨论】:
-
你确定
req.body.allGroups包含一个Promise 吗?在属性而不是函数上看到 await 并非不可能,但也很不寻常。 -
当你设置 res.json 时不会向用户发送响应,在一次迭代后有效地结束循环
-
真正的问题是什么?
pool.query("INSERT ...")不会创建新条目?那为什么取这个名字呢? -
@James 它并没有结束循环。它只会导致从第二次迭代开始的异常。
-
@tonyf 将它们收集到一个数组中,循环后用数组响应?我不知道你想达到什么目的。
标签: javascript node.js express async-await node-postgres