Как извлечь 1 документ из коллекции Firebase / Firestore, основываясь на дате в дротике / флаттере? - PullRequest
0 голосов
/ 26 мая 2019

Ofc, я знаю, как мы извлекаем целую кучу документов из коллекции, например:

      stream: Firestore.instance
          .collection("collection_name")
          .orderBy("date", descending: true) // new entries first
          .snapshots(),
      builder: (context, snapshot) { ....

Это нормально, когда я отображаю целую кучу данных.

Но у меня есть ситуация, когда мне нужно выполнить некоторые вычисления с последними добавленными числами, то есть мне просто нужно получить 1 документ, поэтому я сортирую данные по дате и ограничиваю 1, а затем делаю запрос для этого один такой документ

List<DocumentSnapshot> list;
    QuerySnapshot querySnapshots;
    if (await AuthHelper.checkIfUserIsLoggedIn()) {
      String userId = await AuthHelper.getUserID();
      querySnapshots = await Firestore.instance
          .collection("collection_name")
          .orderBy("date", descending: true) // new entries first, date is one the entries btw
          .limit(1)
          .getDocuments(); // Get Documents not as a stream
      list = querySnapshots.documents; // Make snapshots into a list
      return (list ?? null);
    } else {
      return null;
    }

Но это лучший способ сделать это? Когда я делаю этот запрос, я не получаю весь комплект документов и не отбрасываю остальные? Что означает, что когда эта коллекция растет, она будет становиться все медленнее и медленнее?

Есть ли лучший способ получить последний добавленный документ? Так что я могу использовать его как список / массив / карту, а не как поток?

Спасибо.

1 Ответ

1 голос
/ 26 мая 2019

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

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