如何按React(Firebase)中发布的日期/时间对评论进行排序?

时间:2019-01-15 23:51:22

标签: javascript reactjs firebase firebase-realtime-database

我正在尝试按日期和时间对我的React(Firebase)应用程序中的注释进行排序。

我已经尝试了orderByChild(“ date”),该方法不适用于我的项目。

componentDidMount() {
  const commentsRef = firebase.database().ref("Comments/News").orderByChild("date").limitToLast(5);
commentsRef.on("value", snapshot => {
  let symptoms = snapshot.val();
  let newState = [];
  for (let item in symptoms) {
    newState.push({
      id: item,
      comment: symptoms[item].comment,
      date: symptoms[item].date
    });
  }

这是我的Firebase数据库设置:

Firebase Setup

1 个答案:

答案 0 :(得分:0)

一旦调用snapshot.val(),您将丢失所调用快照的所有订购信息。这是因为JSON对象中的属性没有定义的顺序。

因此,您需要使用内置的DataSnapshot.forEach()函数遍历匹配的节点:

const commentsRef = firebase.database().ref("Comments/News").orderByChild("date").limitToLast(5);
commentsRef.on("value", snapshot => {
  let newState = [];
  snapshot.forEach(symptomSnapshot => {
    let symptom = symptomSnapshot.val();
    newState.push({
      id: symptomSnapshot.key,
      comment: symptom.comment,
      date: symptom.date
    });
  });
  // TODO: this is where you'll typically call setState(...)
});