Как реорганизовать запрос firebase в указанную c доступную функцию - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть функция, которая возвращает снимок запроса пожарной базы Firebase. Это выглядит следующим образом:

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()
      });
  });

Как переписать функцию, чтобы получить этот конечный результат?

1 Ответ

1 голос
/ 22 апреля 2020

Используйте map () в массиве QuerySnapshot docs для преобразования массива снимков документа в массив и 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 наборе инструментов для программиста.

...