Не могу запрос по строке в FireStore. Поле RuntimeException "широта" не является java.lang.String - PullRequest
0 голосов
/ 06 июля 2019

Я пишу небольшое приложение, используя Firestore для Android в Java. Я пытаюсь сделать запрос по полю широты в коллекции. В моей коллекции есть несколько пользователей, которые должны быть возвращены этим запросом - даже консоль firestore в браузере возвращает этих пользователей.

Проблема в том, что я каждый раз получаю сообщение об ошибке:

java.lang.RuntimeException: поле 'широта' не является java.lang.String

Мой код:

public Map<String, Object> getUsersBasedOnBounds2(LatLngBounds bounds){
    db = FirebaseFirestore.getInstance();
    Query query = db.collection(collection).whereGreaterThanOrEqualTo("latitude", (int)bounds.northeast.latitude);
    query.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
        @Override
        public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
            Log.d(TAG, queryDocumentSnapshots.getDocuments().toString());
            for (QueryDocumentSnapshot doc : queryDocumentSnapshots){
                Log.d(TAG, doc.getString("latitude"));
            }
        }
    });
    return null;
}

Что я делаю не так?

1 Ответ

1 голос
/ 06 июля 2019

Поскольку вы запрашиваете API для получения поля String latitude, ошибка сообщает вам, что нет поля latitude, которое является `String. Как говорится в документации :

Выдает RuntimeException, если значение не является строкой.

Значение поля latitude, скорее всего, хранится как число, и в этом случае вы можете получить его напрямую как число. Поскольку значение, скорее всего, хранится как double, это можно сделать, вызвав getDouble:

doc.getDouble("latitude")

Или получите его как общее значение, вызвав get и преобразовав его в строку:

String.valueOf(doc.get("latitude"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...