Количество чтений при получении List <DocumentSnapshots>во Flutter с использованием Cloud Firestore - PullRequest
0 голосов
/ 12 июля 2020

Я новичок в firestore и flutter, и мне было интересно кое-что об операциях чтения и записи

  1. если внутри StreamBuilder мы храним список DocumentSnapshots в такой переменной, final events = snapshot.data.documents;

    , тогда будет ли количество операций чтения равно всему документу внутри коллекции или только одному?

  2. Когда мы добавляем новый документ из консоли firestore используя StreamBuilder, приводит ли это к еще одной операции чтения или после выполнения записи весь построитель Stream перестраивает, что приводит к тому, что все чтения, как и раньше, плюс один.

Извините, если мой вопрос не очень понятно. Вот мой код для StreamBuilder.

  Widget build(BuildContext context) {
    return StreamBuilder<QuerySnapshot>(
      stream: fireStore.collection('trending_events').snapshots(),
      builder: (BuildContext context, AsyncSnapshot snapshot){
        if(!snapshot.hasData){
          return CircularProgressIndicator();
          }
        if(snapshot.hasError){
            return Center(child: Text('Something Wrong'),);
          }
          final events = snapshot.data.documents;
          final urlList = [];
          for(var eventUrl in events){
            final url = eventUrl.data['video_url'];
            urlList.add(url);
          }
          return Padding(
            padding: const EdgeInsets.only(left: 10.0, right: 10.0, top: 23.0),
            child: Column(
              mainAxisSize: MainAxisSize.max,
              children: <Widget>[
                IconButton(
                  icon: Icon(Icons.gesture, size: 20.0,color: Colors.black,),
                  onPressed: (){
                    Navigator.push(context, MaterialPageRoute(
                      builder: (context) => UpcomingEvents(),
                    ));
                  },
                ),
                SizedBox(height: 4.0,),
                Expanded(
                  child: ListVideoGenerator(listURL: urlList),
                ),
              ],
            ),
          );
      },
    );
  }```


1 Ответ

1 голос
/ 12 июля 2020

, тогда будет ли количество операций чтения равно всему документу внутри коллекции или только одному?

Если внутри коллекции есть 4 документа, то с вас будет взиматься плата за эти 4 документа.

Когда мы добавляем что-то из консоли firestore с помощью StreamBuilder, добавляется только один документ, что приводит к еще одной операции чтения или весь построитель Stream перестраивается после выполнения записи, что приводит к все чтения, как и раньше, плюс один.

Это будет одно чтение, поскольку firestore по умолчанию использует кеш. Согласно docs :

Cloud Firestore позволяет вам прослушивать результаты запроса и получать обновления в реальном времени при изменении результатов запроса.

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

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

...