Консоль Google Cloud Firestore читает все документы и расходы - PullRequest
0 голосов
/ 17 февраля 2019

Я новичок в Firestore, поэтому у меня есть коллекции профилей и пользователей.В Cloud Firestore Console, когда я нажимаю на База данных> Firestore> вкладка Data> Profiles или> Users, консоль читает ВСЕ документы в каждой коллекции.Эти чтения учитываются на вкладке Использование.Итак, мой вопрос: если я скажу 500K документов в коллекции профилей и нажму «Данные», мне придется платить за чтение 500K документов только для просмотра только первых 25 документов.Просто нажав на вкладку «Данные», консоль прочитает все документы первой коллекции.

Я пытался использовать фильтр, но чтобы использовать его, вам нужно будет нажать на Коллекцию и сначала прочитать все документы, затем вы можете отредактировать фильтр.

Так оно работает или это мое недоразумение?

Ответы [ 3 ]

0 голосов
/ 08 мая 2019

Некоторое время назад я столкнулся с такой же путаницей, и, углубившись в проблему, я узнал, что все данные, которые загружаются на вкладке «Данные» страницы Firestore, учитываются в общем объеме использования Firestore .

Тем не менее, меня интересовал тот же вопрос, что и у вас, поэтому я обратился в службу поддержки Firebase.Они вернулись назад, подтверждая мой первый инстинкт (Документ читает на вкладке «Данные», это считается) НО первоначально он читает только первые 300 документов ЛЮБОЙ выбранной коллекции, поэтому даже если ваша коллекция имеет более 1 миллиона документов, она будетпо-прежнему загружаются только первые 300 документов.

Они предложили обходной вариант, пока команда Firebase не найдет законное решение

  1. Создание закладки Использование вкладка страницы Firestore.(Таким образом, вы в основном «пропускаете» вкладку «Данные» и 300 бесполезных операций чтения)
  2. Добавление фиктивной коллекции определенным образом, которая гарантирует, что это первая (в алфавитном порядке) коллекция, которая загружается по умолчанию на странице Firestore.
0 голосов
/ 04 июня 2019

У меня просто похожий вопрос, и я считаю излишним публиковать его как вопрос, поэтому я публикую его как asnswer, извините за это,

Вопрос:

this.db.collection(this.collectionName.usersCollection)
        .doc(currentUserId).collection(this.collectionName.friendsCollection)
        .where("friendID","==",id)    
        .get().then(snapshot =>{
          if(snapshot.empty)
          {

            this.db.collection(this.collectionName.chatsCollection).add({
              user1 : currentUserId,
              user2 : id
            }).then(docRef =>{
              docId = docRef.id;
              this.db.collection(this.collectionName.usersCollection)
              .doc(currentUserId)
              .collection(this.collectionName.friendsCollection).doc(docId)
              .set({

                friendID: id,

              })
              this.db.collection(this.collectionName.usersCollection).doc(id)
              .collection(this.collectionName.friendsCollection).doc(docId)
              .set({
                friendID:currentUserId,

               })
               resolve(docRef.id);
            })

          }
          else{
              snapshot.forEach(document =>{
                // console.log("friend id",document.data().friendID, "  docid: ",document.data().docId);
                resolve(document.id);
              })
          }
        })

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

0 голосов
/ 17 февраля 2019

Итак, мой вопрос: если я скажу 500К документов в коллекции профилей и нажму на Данные, мне будет нужно прочитать 500К документов

Абсолютно нет!Вы платите только за операции чтения для документов, которые не относятся к запросу.Я не знаю точного числа, при котором первый запрос ограничен, но данные загружаются небольшими порциями, другими словами, реализована система нумерации страниц.Поэтому после прокрутки вниз загружаются другие элементы и т. Д.

Если вы намереваетесь создать приложение, которое использует Firestore в качестве бэкэнда, учтите также, что автономное сохранение :

Для Android и iOS по умолчанию включено сохранение в автономном режиме.

Для Интернета сохранение по умолчанию в автономном режиме отключено.Чтобы включить постоянство, вызовите метод enablePersistence.

  • Для Интернета автономное сохранение - это экспериментальная функция, которая поддерживается только веб-браузерами Chrome, Safari и Firefox.Кроме того, если пользователь открывает несколько вкладок браузера, которые указывают на одну и ту же базу данных Cloud Firestore, и автономное постоянство включено, Cloud Firestore будет работать правильно только на первой вкладке.

Это означает, чточто когда вы получаете документ (ы) с серверов Firebase, вы больше не регистрируетесь, так как результаты поступают из локального кэша.

...