Object.keys приводит к несогласованному / отличающемуся порядку по сравнению с ключами в Firebase Data

#javascript #firebase #google-cloud-firestore

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

Вопрос:

Новое в firebase. Смотрите выбор ниже, firebase каждый раз возвращает эти записи в случайном порядке. Это известное поведение? Я так много гуглил это, и каждый появляющийся пост посвящен рандомизации порядка. Кроме того, вы можете счесть этот ключ временной метки странным, это другой вопрос, но если у вас есть предложение, как я могу лучше структурировать эти данные, пожалуйста, посоветуйте.

Спасибо!

введите описание изображения здесь

введите описание изображения здесь

 export const getMonthlyData = async (month, user) => {
  const performanceRef = firestore.doc(`performance/${user.id}`);
  const doc = await performanceRef.get();

    if(doc.exists) {
      const docArray = Object.keys(doc.data());
      console.log("Docs>>>>>>", docArray);
   }
}
  

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

1. Что вы подразумеваете под «этими записями»? Пожалуйста, отредактируйте вопрос, чтобы показать код, который вы используете, и приведите пример результатов, которые вы наблюдаете и которые отличаются от ожидаемых. Следует отметить, что все имена полей являются строками, а документы по сути являются хэш-картами этих полей.

2. @DougStevenson смущен тем, что я этого не уловил, на самом деле Object.keys изменяет данные. Я добавил приведенный выше код и изображение.

3. Вы пробовали .values () или .entries (), чтобы посмотреть, исправит ли это это?

4. (значения / записи имеют тот же порядок, что и ключи.)

5. @Phil Я не серверный разработчик, но, вероятно, могу придумать лучшую структуру в базе данных SQL. Я просто пытаюсь обработать некоторые данные для моего приложения react, над которым я практикуюсь. Если у вас есть лучшее предложение по структурированию этих данных, пожалуйста, сообщите.

Ответ №1:

Firestore SDK не дает гарантии порядка повторения свойств объектов. При вызове Object.keys() вы получите массив строк с порядком, который не предопределен. Если вам требуется, чтобы у них был порядок, вы должны отсортировать их самостоятельно перед их обработкой.

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

1. @user2864740 SDK не дает никаких документированных гарантий, поэтому не следует предполагать так много.

2. @user2864740 На случай, если вы не заметили, я отредактировал ответ.