Я обвиняюсь в операциях чтения каждый раз, когда местоположение изменяется? - PullRequest
0 голосов
/ 04 июня 2018

У меня есть база данных Firestore, которая содержит 100 локаций, каждая с правильно установленными lat и lng.Я создал метод для фактического чтения данных из базы данных с помощью обратного вызова:

public static void readLocations(MyCallback myCallback) {
    locationsRef.get().addOnCompleteListener(task -> {
        if (task.isSuccessful()) {
            List<LocationModel> locationList = new ArrayList<>();
            for (QueryDocumentSnapshot document : task.getResult()) {
                LocationModel locationModel = document.toObject(LocationModel.class);
                locationList.add(locationModel);
            }
            myCallback.onCallback(locationList);
        }
    });
}

Я использую LocationCallback для отслеживания текущей позиции.Используя следующий код, я вызываю метод readLocations() внутри LocationCallback, чтобы выполнить некоторые математические расчеты относительно некоторых расстояний:

LocationCallback locationCallback = new LocationCallback() {
    @Override
    public void onLocationResult(LocationResult locationResult) {
        for (Location myLocation : locationResult.getLocations()) {
            currentLocation = myLocation;
            LatLng currentLatLng = new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude());

            readLocations(locationList -> {
                for (LocationModel lm : locationList) {
                    Double lat = lm.getLat();
                    Double lng = lm.getLng();
                    Location location = new Location("");
                    location.setLatitude(lat);
                    location.setLongitude(lng);

                    //Calculations
                 }
            });
        }
    }
};

Поэтому каждый раз, когда текущее местоположение изменяется, я вычисляю расстояние между текущим местоположениеми местоположения из базы данных.То есть, вызывая метод readLocations() каждый раз, когда позиция меняется, это означает, что я запрашиваю базу данных каждый раз?Другими словами, каждый раз, когда текущее местоположение изменяется, мне платят 100 операций чтения?Или, поскольку я уже использовал вызов get(), будет считаться одной операцией?

1 Ответ

0 голосов
/ 04 июня 2018

Вы платите за количество документов, прочитанных на сервере каждый раз, когда вы звоните get ().Если в вашем клиенте включена локальная постоянность (по умолчанию), то документы могут поступать из кэша, если документы также не изменены на сервере.Чтение кэшированных документов не взимается.

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