Как получить список документов из коллекции в Firestore Android - PullRequest
0 голосов
/ 26 апреля 2018

Моя структура базы данных Firestore:

|
|=>root_collection
                  |
                  |=>doc1
                         |                  
                         |=>collection
                  |
                  |=>doc2
                         |                  
                         |=>collection
                  |
                  |=>doc3
                         |                  
                         |=>collection

Теперь я хочу получить список документов из root_collection.Будет список со следующими данными {"doc1", "doc2", "doc3"}.Мне это нужно, потому что я хочу изготовить счетчик и поместить эти данные в счетчик.Тогда пользователь выберет какой-нибудь документ и загрузит его.

Я пытаюсь использовать код ниже:

firestore.collection("root_collection")
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        for (QueryDocumentSnapshot document : task.getResult()) {
                            Log.d(TAG,document.getId() + " => " + document.getData());
                        }
                    } else {
                        Log.d(TAG, "Error getting documents: ", task.getException());
                    }
                }
            });

Но код работает только тогда, когда у меня есть структура данных без сборов вдокументы.В другом случае нет никаких документов в QueryDocumentSnapshot.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Ну, я думаю, вы не можете сделать это сейчас, потому что пожарный магазин не предоставляет такого рода знания о дочерних документах.Ваша корневая коллекция будет просто знать свои документы.

Но что вы можете сделать, так это в документе своей корневой коллекции получить ссылку на свою коллекцию, а затем вы можете получить документы в этой коллекции.

0 голосов
/ 26 апреля 2018

Чтобы иметь список, содержащий все имена ваших документов в пределах root_collection, используйте следующий код:

firestore.collection("root_collection").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            List<String> list = new ArrayList<>();
            for (QueryDocumentSnapshot document : task.getResult()) {
                list.add(document.getId());
            }
            Log.d(TAG, list.toString());
        } else {
            Log.d(TAG, "Error getting documents: ", task.getException());
        }
    }
});

Результат в вашем logcat будет:

[doc1, doc2, doc3]

Помните, этот код будет работать, только если у вас есть какие-то свойства в этих документах, в противном случае вы получите пустой список.

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