【发布时间】:2021-02-17 12:50:00
【问题描述】:
我有一个现有对象data。
我正在使用 NodeJS async 函数来检索 fetchResponse 的值。
最后,我尝试使用以下for loop 将fetchResponse 嵌入到现有的data 对象中
for (let key in data) {
for (let number in data[key]) {
data[key][number].map( async d=> {
const fetchResponse = await sequelize
.query(await fetchHostDetails(d.Hostname), options);
data[key][number]['Fetchresult'] = fetchResponse;
});
}
}
return data;
我看到 data 仍然具有原始值,不包括 key value pair Fetchresult : fetchResponse
我正在尝试使用Promise.All 如下,但它仍然给出原始data 对象值。
for (let key in data) {
for (let number in data[key]) {
data[key][number].map( async d=> {
const fetchResponse = await sequelize
.query(await fetchHostDetails(d.Hostname), options);
await Promise.all({...d, Fetchresult : fetchResponse});
});
}
}
return data;
const data =
{
"error1": {
"7": [
{
"ErrorType": "Error-1A",
"Hostname": "host123.com"
}
],
"8": [
{
"ErrorType": "Error-1B",
"Hostname": "host223.com"
},
{
"ErrorType": "Error-1C",
"Hostname": "host1231.com"
}
]
}
}
对于Error-1A 下的主机名,我正在低于fetchResponse
const fetchResponse =
[
{
"resType": "unknow data",
"res": "missing data"
},
{
"resType": "login failed",
"res": "login with wrong userid"
}
]
同样,Error-1b 和 Error-1C 下的主机名也将有单独的 fetchResponse,但响应格式将类似于我们为 Error-1A 获得的格式。
对于data.error1[8],我们得到fetchResponse 的2 个值,但请注意,它们是Error-1B 和Error-1C 的2 个独立值。一个显示在Error-1B之后,另一个显示在Error-1C之后。
【问题讨论】:
-
map返回一个数组。如果您没有使用返回的数组,则说明您错误地使用了map。在这种情况下,您可以使用for await .. of(不带Promise.all)来帮助您完成您的工作,尽管您正在做的事情还不清楚。 -
我的问题更加清晰。请看一下
-
对于
data.error1[8],您将获得多个fetchResponses(每个主机名一个)。你到底想用那个fetchResponse做什么? -
对于
data.error1[8],我们得到fetchResponse的2 个值,但请注意,它们是Error-1B和Error-1C的2 个独立值。Error-1B之后显示一个,Error-1C之后显示另一个。
标签: javascript node.js arrays json dictionary