Я пытаюсь понять массивы в Firebase немного больше.В настоящее время я храню карты в массивах, где одним из полей внутри карты является position
, которое я могу использовать в своем мобильном приложении для сортировки массива при извлечении и отображения результатов в порядке position
.
Документы на Firebase говорят:
Массивы сортируются по элементам.Если элементы равны, массивы сортируются по длине.
Например, [1, 2, 3]
<<code>[1, 2, 3, 1] <<code>[2].
А затем есть раздел, описывающий, как картысортируются также:
Порядок ключей всегда сортируется.Например, если вы пишете {c: "foo", a: "bar", b: "qux"}
, карта сортируется по ключу и сохраняется как {a: "foo", b: "bar", c: "qux"}
.
Поля карты сортируются по ключу и сравниваются по парам ключ-значение, сначала сравниваются ключи, а затем значения,Если первые пары ключ-значение равны, сравниваются следующие пары ключ-значение и т. Д.Если две карты начинаются с одинаковых пар ключ-значение, то учитывается длина карты.Например, следующие карты расположены в порядке возрастания:
{a: "aaa", b: "baz"}
{a: "foo", b: "bar"}
{a: "foo", b: "bar", c: "qux"}
{a: "foo", b: "baz"}
{b: "aaa", c: "baz"}
{c: "aaa"}
Но затем я попытался сделать это в Firestore: я перемешал порядок карт в приведенном выше примере и сохранил их в массиве:
data= [{"c": "aaa"}, {"a": "aaa", "b": "baz"}, {"a": "foo", "b": "baz"}, {"b": "aaa", "c": "baz"}, {"a": "foo", "b": "bar", "c": "qux"}, {"a": "foo", "b": "bar"}]
И после вставки в документ Firestore массив не сортировался!Хотя сами ключи сортируются в пределах одной карты, элементы в массиве остаются в том же порядке.
Так работает ли сортировка в массивах, даже если элементы являются картами?Вот пример того, что я храню в Firestore:
{
"car_collection": {
"models": {
data: [
{
"model": "Honda",
"color": "black",
"position": 0
},
{
"model": "Hyundai",
"color": "red",
"position": 1
},
{
"model": "Chevrolet",
"color": "yellow"
"position": 2
}
]
}
}
}
Я храню дополнительное поле, называемое «позиция», и порядок карт остается неизменным при каждом извлечении.Интересно, нужно ли мне даже хранить это поле, или данные будут отсортированы в том порядке, в котором я их храню.