#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:
Один из способов, который вы можете сделать, это установить порядок ключей, который вы хотите, в массиве. Поскольку массивы упорядочены, он будет поддерживать желаемый порядок. Затем вы берете этот ключ и используете его в словаре. Пока словарь не в порядке, вы будете получать доступ к каждому значению в порядке по ключу.