Javascript 如何解决Firebase函数中的嵌套异步数据库调用
我想得到一个对象列表,每个对象在另一个集合中都有一个记录,这个集合也必须被调用。这两个请求都会返回承诺,我的问题是,如何“等待”内在承诺在下一个外在承诺完成之前实现 代码如下:Javascript 如何解决Firebase函数中的嵌套异步数据库调用,javascript,firebase,function,async-await,google-cloud-firestore,Javascript,Firebase,Function,Async Await,Google Cloud Firestore,我想得到一个对象列表,每个对象在另一个集合中都有一个记录,这个集合也必须被调用。这两个请求都会返回承诺,我的问题是,如何“等待”内在承诺在下一个外在承诺完成之前实现 代码如下: export async function getAllCompanies(req: Request, res: Response) { try { const listCompanies = await db.collection('companies').get() const
export async function getAllCompanies(req: Request, res: Response) {
try {
const listCompanies = await db.collection('companies').get()
const companies = listCompanies.docs.map(async doc => {
const data = doc.data()
const location = await db.collection('locations').doc(data.locationId).get()
const locationData = location.data()
return {
id: doc.id,
name: data.name,
address: locationData ? locationData.address : null,
zipCode: locationData ? locationData.zipCode : null,
city: locationData ? locationData.city : null,
country: locationData ? locationData.country : null,
email: data.email,
phoneNumber: data.phoneNumber,
type: data.type,
createTime: doc.createTime.toDate(),
lastUpdateTime: data.lastUpdateTime
}
})
return res.status(200).send({ companies })
} catch (err) {
return handleError(res, err)
}
}
我想你在寻找:
const resolvedCompanies = await Promise.all(companies);
return res.status(200).send({companies: resolvedCompanies});
就在
返回res.status(…)
之前。这将等待您映射到公司列表中的所有承诺得到解决,然后返回值而不是承诺。我想您正在寻找:
const resolvedCompanies = await Promise.all(companies);
return res.status(200).send({companies: resolvedCompanies});
就在
返回res.status(…)
之前。这将等待您映射到公司列表中的所有承诺得到解决,然后返回值而不是承诺。谢谢!正是我想要的。谢谢!正是我想要的。