Как отфильтровать данные в firestore (firebase) и получить отфильтрованные данные? Как использовать «равно» с коллекцией БД?

#javascript #reactjs #firebase #google-cloud-firestore

#javascript #reactjs #firebase #google-облако-firestore

Вопрос:

 export const getSprintByProjectId = (key) => async (dispatch) => {
  console.log(key);
  try {
    dispatch(loaderOn());
    const result = await db
      .collection("sprints")
      .orderByChild("projectId")
      .equalTo(key);
  } catch (error) {
    dispatch(errorOn());
  } finally {
    dispatch(loaderOff());
  }
};
  

вот структура моего firestore введите описание изображения здесь

пытаюсь получить данные по идентификатору

Ответ №1:

Ваш JS-код выглядит так, как будто вы пытаетесь использовать методы запроса к базе данных в реальном времени в Firestore. Я бы ожидал, что это будет выглядеть больше как:

 export const getSprintByProjectId = (key) => async (dispatch) => {
  console.log(key);
  try {
    dispatch(loaderOn());
    const result = await db
      .collection("sprints")
      .where("projectId", "==", key)
      .get();
    console.log(result.docs.map(d => d.data());
  } catch (error) {
    dispatch(errorOn());
  } finally {
    dispatch(loaderOff());
  }
};
  

Комментарии:

1. как я могу получить ответ? Как этот const answer = result.docs.map((doc) => ({ …doc.data(), }));

2. Отредактировано, извините, что я пропустил эту часть 🙂