遍历数组并根据PostgreSQL查询的结果构造对象"/>
需要帮助遍历数组并根据PostgreSQL查询的结果构造对象
这是我的问题:
var ps = ["P1", "P2"];
var hs = ["H1", "H2"];
var jOut = {};
hs.forEach(async (h) => {
var t = `t_${h}`;
var query = {
text: `SELECT pName, pPrice FROM ${t} WHERE pName = ANY($1)`,
values: [ps],
rowMode: "array"
};
var qres = await client.query(query);
jOut[t] = qres.rows;
});
console.log(jOut);
我希望输出看起来像这样:
{
t_H1: [ [pName: "P1", pPrice: 0.5], [pName: "P2", pPrice: 1.2] ],
t_H2: [ [pName: "P1", pPrice: 0.6], [pName: "P2", pPrice: 1.0] ]
}
但是我的输出看起来像这样:
{}
顺便说一下,我是这个网站的新手。如果我在这个问题上做错了什么,请告诉我。
回答如下:[forEach
]循环不等待承诺被兑现,这就是为什么console.log(jOut);
在您的所有/任何承诺都得到解决之前立即执行。
而不是使用for..of
循环
for(const h of hs) {
var t = `t_${h}`;
var query = {
text: `SELECT pName, pPrice FROM ${t} WHERE pName = ANY($1)`,
values: [ps],
rowMode: "array"
};
var qres = await client.query(query);
jOut[t] = qres.rows;
}
console.log(jOut);
更多推荐
需要帮助遍历数组并根据PostgreSQL查询的结果构造对象
发布评论