Как отсортировать комментарии по дате / времени, опубликованные в React (Firebase)? - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь отсортировать комментарии в моем приложении 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 голосов
/ 16 января 2019

Как только вы звоните 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(...)
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...