orderByChild () отправлять много раз - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь создать SectionList с данными, полученными из firebase.Я использовал для создания FlatList со следующим кодом, и он отлично работает.

firebase.database().ref(`/restaurantes/${currentUser.uid}/dishes`)
 .on('value', snapshot => {
      dispatch({ type: DISHES_FETCH_SUCCESS, payload: snapshot.val() })
  });

и я получаю массив со всеми результатами (диспетчеризация выполняется только один раз). Я попытался упорядочить данные, чтобы им было легко управлять.Но когда я попробовал следующий код, диспетчеризация выполнялась 1 раз для каждого результата, поэтому мое состояние получает только последний результат.

firebase.database().ref(`/restaurantes/${currentUser.uid}/dishes`)
 .orderByChild("category")
 .on('child_added', snapshot => {
      dispatch({ type: DISHES_FETCH_SUCCESS, payload: snapshot.val() })
  });

Что я могу сделать?

1 Ответ

0 голосов
/ 22 октября 2018

Ваш новый код прослушивает child_added, который срабатывает для каждого отдельного дочернего узла.Исходный код прослушивает value, который запускается один раз для всех объединенных результатов.

Чтобы получить исходное поведение в порядке категории:

firebase.database().ref(`/restaurantes/${currentUser.uid}/dishes`)
 .orderByChild("category")
 .on('value', snapshot => {
      dispatch({ type: DISHES_FETCH_SUCCESS, payload: snapshot.val() })
  });
...