如何将Firebase查询重构为特定的可用函数

问题描述 投票:0回答:1

我有一个函数返回Firebase Firestore查询的快照。如下:

export async function getClientWorkflowsFromFirebase(clientID) {

    const snapshot = await firebase.firestore().collection("workflows").where("client_id", "==", clientID).get();
    return snapshot


}

要运行上面的代码并获得结果,我想这样做:

  getClientWorkflowsFromFirebase("some-client-id").then((x)=>{
      x.forEach(doc => {
          console.log(doc.data());
      });
  });

效果很好,但不是我想要的API。我希望得到相同的结果,而最终用户不必记住doc.data()

相反,我想让thenable函数为用户提供如下数据:

getClientWorkflowsFromFirebase("some-client-id").then((arr)=>{
      arr.forEach(val => {
          // data is then available in val, not val.data()
      });
  });

我如何重写该函数以提供最终结果?

javascript firebase google-cloud-firestore async-await es6-promise
1个回答
0
投票

使用QuerySnapshot的map()数组上的docs将文档快照的数组转换为JavaScript对象和JavaScript对象的数组。

export async function getClientWorkflowsFromFirebase(clientID) {
    const snapshot = await firebase.firestore().collection("workflows").where("client_id", "==", clientID).get();
    return snapshot.docs.map(doc => doc.data())
}

一定要学习使用Array.map()-它应该在每个JavaScript程序员的工具箱中。

© www.soinside.com 2019 - 2024. All rights reserved.