пары ключ-значение карты firestore случайным образом меняют порядок при извлечении из базы данных

#firebase #google-cloud-firestore

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

Вопрос:

У меня есть кнопка, которая запускает следующий код при нажатии:

 let dataReference = await db.collection("dog").doc("1").get()
let HashMap = dataReference.data().Annotations
console.log(HashMap)
  

Моя база данных firestore выглядит следующим образом:

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

Всякий раз, когда эта функция запускается, она возвращает правильный словарь, однако порядок ключей, похоже, меняется случайным образом. Вот скриншот моих консольных журналов, когда я нажимал кнопку несколько раз:

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

Почему меняется порядок пар ключ-значение и есть ли способ это исправить?

Ответ №1:

Firestore SDK не гарантирует порядок повторения полей документа. То, что вы видите в консоли, всегда лексически сортируется по коду самой консоли. Если вам требуется стабильный порядок, вы должны отсортировать их самостоятельно перед итерацией.

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

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

2. Вы должны сделать каждую запись отдельным документом и использовать временную метку или какое-либо поле для указания порядка во время запроса. На самом деле у вас нет других вариантов.

Ответ №2:

Один из способов, который вы можете сделать, это установить порядок ключей, который вы хотите, в массиве. Поскольку массивы упорядочены, он будет поддерживать желаемый порядок. Затем вы берете этот ключ и используете его в словаре. Пока словарь не в порядке, вы будете получать доступ к каждому значению в порядке по ключу.