Доступ к n-му документу в Firestore с помощью Flutter - PullRequest
0 голосов
/ 11 мая 2019

Сначала я хочу определить длину моей коллекции (т.е. сколько документов находится в моей коллекции?), А затем случайным образом взять один из документов и отобразить в нем определенные поля.

В моем ScaffoldПока у меня есть StreamBuilder:

 StreamBuilder(
          stream: _wordsFoods.snapshots(),
          builder: (context, snapshot){
            return _buildList(context, snapshot.data.documents);
      }
)

_buildList возвращает длину коллекции "слов":

Widget _buildList(BuildContext context, List<DocumentSnapshot> snapshot)  {
    return Center(child: Text(snapshot.length.toString()));
  }

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

1 Ответ

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

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

Также нет операции для получения документа с определенным смещением в клиентских SDK для Firestore. И хотя на стороне сервера Admin SDK действительно предлагают метод offset(), этот на самом деле под капотом читает все документы, которые вы предлагаете пропустить. Таким образом, хотя эти документы экономят полосу пропускания, они все равно считываются и оплачиваются по вашей квоте.

Чтобы эффективно извлечь случайный документ из Firestore, взгляните на ответ Дэна: Firestore: Как получить случайные документы в коллекции

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