我正在实施功能每月收入。 简单来说,它会返回每月的总收入,并接受将产生收入、月和年的站数组参数。
问题 在这个函数内部,我有 getStationPortion,它将获取用户的收入部分。 所以我想让它像这样返回对象。
stationsPortion = {station1 : 30, station2 : 20}
按月收入
const stationPortions = await getStationPortions(stations)
console.log("portion map", stationPortions //it will be shown very beginning with empty
getStationPortions
const getStationPortions = async (stations) => {
let stationPortions = {}
stations.map(async (value) => {
const doc = await fdb.collection('Stations').doc(value).get()
if (!doc.exists) {
console.log("NO DOC")
} else {
stationPortions[value] = doc.data().salesPortion
console.log(stationPortions) //it will be shown at the last.
}
})
return stationPortions
}
我认为 async 函数应该等待结果,但事实并非如此。 如果我的理解有误,我会感到困惑。 谢谢 (顺便说一下,fdb 是 firebase admin(firestore)
答案 0 :(得分:1)
工作代码
const getStationPortions = async (stations) => {
let stationPortions = {}
await Promise.all(stations.map(async (value) => {
const doc = await fdb.collection('Stations').doc(value).get()
if (!doc.exists) {
console.log("NO DOC")
} else {
stationPortions[value] = doc.data().salesPortion
console.log(stationPortions)
}
}))
return stationPortions
}
module.exports = router;