Как получить данные из коллекции в firestore с помощью пункта where? - PullRequest
0 голосов
/ 28 июня 2019

Я хочу получить данные (поле langtitude) из коллекции в firestore, с предложением where, но это не работает.

Мой код:

db = FirebaseFirestore.getInstance();
Query query = db.collection(collection).whereGreaterThan("longtitude", String.valueOf(bounds.northeast.latitude));
query.addSnapshotListener(new EventListener<QuerySnapshot>() {
            @Override
            public void onEvent(@javax.annotation.Nullable QuerySnapshot queryDocumentSnapshots, @javax.annotation.Nullable FirebaseFirestoreException e) {
                if (e != null) {
                    Log.w(TAG, "Listen failed.", e);
                    return;
                }

                if (queryDocumentSnapshots != null) {
                    Log.d(TAG, queryDocumentSnapshots.getMetadata().toString());        
                } else {
                    Log.d(TAG, "Current data: null");
                }
            }
        });

Я получаю только

SnapshotMetadata{hasPendingWrites=false, isFromCache=false}

Но я хочу поля из коллекции.Как это сделать?

Я пробовал разные методы, и ни один из них не возвращал поля в коллекции.

1 Ответ

0 голосов
/ 28 июня 2019

Когда вы запускаете запрос к коллекции, вы получаете QuerySnapshot, который может содержать ноль или более документов. Чтобы получить фактические документы, вам нужно перебрать документы, как показано здесь :

public void onEvent(@javax.annotation.Nullable QuerySnapshot queryDocumentSnapshots, @javax.annotation.Nullable FirebaseFirestoreException e) {
    if (e != null) {
        Log.w(TAG, "Listen failed.", e);
        return;
    }

    for (QueryDocumentSnapshot doc : queryDocumentSnapshots) {
        if (doc.get("longtitude") != null) {
            Log.d(TAG, doc.getString("longtitude"));
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...