Как получить данные из коллекции в Firestore на Android? - PullRequest
0 голосов
/ 25 мая 2019

У меня есть база данных Firestore следующим образом:

База данных изображений Firestore

Я пробовал это, чтобы получить значение вложенной коллекции:

  FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
    DocumentReference bulletinRef = rootRef.collection("facultades").document("3QE27w19sttNvx1sGoqR").collection("escuelas").document("0");
    bulletinRef.get()
            .addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
                @Override
                public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                    if (task.isSuccessful()) {
                        DocumentSnapshot document = task.getResult();
                        Log.d(LOG_TAG, "RESULTADO DE LA CONSULTA" + "===" + document.getData());
                    }
                }
            });

Но это возвращает нуль: Результат изображения

Пожалуйста, помогите мне.

Ответы [ 2 ]

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

Спасибо, это действительно помогло мне, я использовал этот код для итерации

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
    rootRef.collection("facultades").document("3QE27w19sttNvx1sGoqR")
            .get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<DocumentSnapshot> task) {
            if (task.isSuccessful()) {
                DocumentSnapshot document = task.getResult();
                if (document.exists()) {
                    List<Object> list = (List<Object>) document.get("escuelas");
                    //Iterate throught the list and get the data

                    Map<String, String> map = new HashMap<>();
                    map.put("key2", list.toString());
                    for (Map.Entry<String, String> entry : map.entrySet()) {
                        System.out.println(entry.getKey() + " = " + entry.getValue());
                    }
                }
            }
        }
    });

это результат: Результат изображения

Но я не понимаю, какca Я получаю только это:

база данных изображений

Facultades> все документы> escuelas> name

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

Вы получаете null, потому что escuelas является , а не подколлекцией, это массив, который содержит объекты типа HashMap.Поэтому следующая строка кода:

DocumentReference bulletinRef = rootRef.collection("facultades").document("3QE27w19sttNvx1sGoqR")
    .collection("escuelas").document("0");

никогда не будет работать.Если вы хотите получить данные в массиве escuelas, обратите внимание, что поля типа array поступают из базы данных Cloud Firestore в виде List карт.Поэтому, пожалуйста, используйте следующие строки кода:

rootRef.collection("facultades").document("3QE27w19sttNvx1sGoqR").get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.isSuccessful()) {
            DocumentSnapshot document = task.getResult();
            if (document.exists()) {
                List<Object> list = (List<Object>) document.get("escuelas");
                //Iterate throught the list and get the data
            }
        }
    }
});

Обратите также внимание, что во время итерации каждый элемент, который вы получаете из списка, имеет тип HashMap.Поэтому вам нужно будет выполнить итерацию еще раз, чтобы получить соответствующие данные внутри каждого HashMap объекта.

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