如何在javascript(node.js) API映射嵌套数组?


let getOeReport = async (req, res) => {
try {

let searchFormatForReason = {
"query": {
"reasonCode": null,
},
"fields": {
'reason': 1, '_id': 0
}
}
let result = await oeDao.getOeReport(searchFormat)
let resultReasons =
result.map(async res =>
res.sequences.map(inter =>
inter.interrupts.map((interrupts) => {
searchFormatForReason.query.reasonCode = interrupts.reason
reasonDao.getReasonByFields(searchFormatForReason)
})
)
)
console.log(resultReasons)
res.status(200).json({
status: "Success",
data: {
result: result
}
});
} catch (err) {
console.log(err)
res.status(400).json({
status: "Failure"
});
}
};

在上面的代码中,如果我试图控制resultons意味着我得到null。结果变量有嵌套的对象数组,这样,我需要'原因'值在序列数组内的中断数组,这是在结果数组内。我应该用那个值发出API请求我可以把它推入resultreons数组。请有人帮帮我……谢谢你

let resultReasons =
result.map(async res =>
res.sequences.map(inter =>
inter.interrupts.map((interrupts) => {
searchFormatForReason.query.reasonCode = interrupts.reason
reasonDao.getReasonByFields(searchFormatForReason)
})
)
)

在这段代码中,你使用的是async,所以你必须接收Promise,因为你没有在异步函数中使用await,我看不出保留它的原因,但是你可以按照下面的代码添加一个await,应该解决这个问题(你已经在getOeReport上使用async了,所以它将在没有任何修改的情况下工作)

let resultReasons =
await result.map(async res =>
res.sequences.map(inter =>
inter.interrupts.map((interrupts) => {
searchFormatForReason.query.reasonCode = interrupts.reason
reasonDao.getReasonByFields(searchFormatForReason)
})
)
)

但是你说你得到null,我不明白你是如何得到它的,这是因为你再次在第一个地图中使用async函数,因此你必须得到Promise,我看到你的变量可以为空的唯一方法是如果result变量为空,但它应该触发一个异常,所以你的console.log将永远不会被执行

相关内容

  • 没有找到相关文章

最新更新