orderByChild()分派多次

时间:2018-10-22 17:04:57

标签: react-native firebase-realtime-database react-redux

我正在尝试使用从Firebase获取数据的SectionList。我曾经用以下代码创建FlatList,它可以完美工作。

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

,我得到一个包含所有结果的数组(调度仅执行一次) 我试图订购数据,以便于管理。但是,当我尝试以下代码时,对每个结果执行一次调度,因此我的状态仅获得最后一个结果。

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

我该怎么办?

1 个答案:

答案 0 :(得分:0)

您的新代码正在监听child_added,它会为每个单独的子节点触发。原始代码会监听value,它会为所有合并结果触发一次。

要按类别顺序获得原始行为:

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