Почему документы не добавляются по порядку в Cloud Firestore? - PullRequest
1 голос
/ 05 февраля 2020

Код:

CollectionReference reference = Firestore.instance.collection("users");
Map<String, dynamic> dummyData = {};

List elements = List.generate(5, (index) => index);
Future.forEach(elements, (element) async {
  dummyData["key"] = "$element";
  await reference.add(dummyData);
});

Как видите, я жду каждого дополнения. Но данные, которые я вижу на консоли Firebase, находятся в следующем порядке:

randomId:
  key: 3
randomId:
  key: 4
randomId:
  key: 1
randomId:
  key: 0
randomId:
  key: 2

Однако это должно быть:

randomId:
key: 4
randomId:
key: 3
randomId:
key: 2
randomId:
key: 1
randomId:
key: 0

Может кто-нибудь сказать мне, что я делаю неправильно, я newb ie для Flutter и Firebase.


Редактировать:

Я не загружаю данные, а записываю их на сервер. Данные должны были быть записаны в том же порядке, в котором я пишу код, не так ли?

Ответы [ 3 ]

2 голосов
/ 05 февраля 2020

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

1 голос
/ 05 февраля 2020

Порядок документов, который вы видите в консоли Firebase, основан на уникальном идентификаторе документа, который был указан при добавлении документа. Поскольку вы используете add (), SDK присвоил ему произвольный идентификатор документа. Поэтому документы будут отображаться в произвольном порядке в консоли. Этого следовало ожидать. Здесь нет ничего плохого.

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

1 голос
/ 05 февраля 2020

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

.orderBy()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...