我已经看到一些其他人张贴这个问题,我已经尝试了他们说的解决方案的工作,但没有任何工作对我来说迄今为止。
我从一个集合(A)中进行查询并获得一个文档数组,然后我想遍历数组中的每个文档,并根据第一个集合(A)中每个文档的值从另一个集合(B)中进行查询。
这是我的代码,我已经尝试了async/await
(如本例所示)以及.then
与Promise.all()
export const getUserEvents = async (req: Request, res: Response) => {
console.log("getUserEvents:req.params.userId: ", req.params.userId);
try {
let events: Event[] = [];
const snapshot = await db.collection("eventPeople").where("userId", "==", req.params.userId).get();
snapshot.forEach(async (doc) => {
const eventRef = await db.collection("events").where("eventId", "==", doc.data().eventId).get();
eventRef.forEach((eventDoc) => {
console.log("event: ", eventDoc.data())
});
});
console.log("events: ", events)
return res.json({ events: events });
} catch (err) {
functions.logger.error("unable to query eventPeople using userId", { userId: req.params.userId, error: err });
}
return res.json({ events: "events" });
};
1条答案
按热度按时间ivqmmu1c1#
forEach
终结器不需要async
函数,因此await
插入该循环不会使forEach
周围的代码等待任何东西。要使整个循环等待,请使用
for of
:另请参阅:Using async/await with a forEach loop