Firebase Firestore返回QuerySnapshot

时间:2020-11-09 10:53:28

标签: javascript node.js firebase google-cloud-firestore google-cloud-functions

我刚刚开始使用Firebase Cloud函数和Firestore,但是当我在Firebase Cloud函数(如以下代码)中使用Firestore时,它是返回值和QuerySnapshot而不是返回数据。如果有人以前遇到过此问题并已解决,请告诉我。这也将帮助我解决此问题。

谢谢。

export async function allRestaurants(req: Request, res: Response) {
  try {
    // const { id } = req.params
    const restaurantsRef = admin.firestore().collection('restaurants');
    const snapshot = await restaurantsRef.get();

    console.log(">>>>>>>>>", snapshot);
    return res.status(200).send({ data: { restaurants: snapshot } })
  } catch (err) {
    return handleError(res, err)
  }
}

1 个答案:

答案 0 :(得分:2)

您通常会收到QuerySnapshot,因为get()方法会返回一个以QuerySnapshot解析的Promise。

由您自行决定要生成要发送回Cloud Function使用者的内容。

例如,您可以使用forEach()方法在QuerySnapshot上循环,或者如下图所示,使用docs数组。

export async function allRestaurants(req: Request, res: Response) {
  try {
    // const { id } = req.params
    const restaurantsRef = admin.firestore().collection('restaurants');
    const snapshot = await restaurantsRef.get();

    const responseContent = snapshot.docs.map(doc => doc.data());

    return res.status(200).send({ data: { restaurants: responseContent } })
  } catch (err) {
    return handleError(res, err)
  }
}