Firestore addSnapshotListener запрашивает все данные при добавлении нового документа - Android - PullRequest
0 голосов
/ 23 февраля 2019

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

Я имею в виду, что есть способ, подобный этому, проверять только новый добавленный документ, если запрос подходит для него, и если да, вернуть это и добавить в arraylist.Я задаю этот вопрос, потому что, если запрос возвращает 50 элементов, когда квота добавленного нового документа уменьшится на 50. Если квота добавленного 10 нового документа увеличится на 500.

 Query transactionsQuery = IOTransactions
            .whereLessThan("timestamp", dateOfToday())
            .whereGreaterThan("timestamp", findDaysAgo())
            .orderBy("timestamp", Query.Direction.DESCENDING)
            .limit(40);
    transactionsQuery.addSnapshotListener(new EventListener<QuerySnapshot>() {
        @Override
        public void onEvent(@javax.annotation.Nullable QuerySnapshot queryDocumentSnapshots, @javax.annotation.Nullable FirebaseFirestoreException e) {
            if (e != null) {
                Log.w("FirestoreDemo", "Listen failed.", e);
                return;
            }

            for (DocumentChange dc : queryDocumentSnapshots.getDocumentChanges()) {
                switch (dc.getType()) {
                    case ADDED:
                        Log.d(TAG, "New city: " + dc.getDocument().getData());
                        transactionsList.add(dc.getDocument().toObject(StockTransaction.class));
                        break;
                    case MODIFIED:
                        Log.d(TAG, "Modified city: " + dc.getDocument().getData());
                        break;
                    case REMOVED:
                        Log.d(TAG, "Removed city: " + dc.getDocument().getData());
                        transactionsList.remove(dc.getDocument().toObject(StockTransaction.class));
                        break;
                }
            }

При проверке кода и квоты я понялчто если я использую методы whereLessThan и whereGreaterThan, то число считываний увеличивается на 40, что является предельным значением.Однако, если я удаляю методы where, чтение считается только 1. Я думаю, что это похоже на ошибку, потому что запрос может проверять только добавленный элемент.Например, когда новый документ добавлен в эту коллекцию, проверьте его на предмет запроса, если он имеет значение true для запроса, затем верните новый добавленный документ, если значение false, ничего не делает.

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