Firestore - получить родительский документ вложенной коллекции - PullRequest
1 голос
/ 20 мая 2019

Screenshot of my database as requested Я работаю над приложением, которое использует базу данных firestore со следующей иерархией: parent_collection: parent_document: поднабор: child_document { имя строки} используя collectionGroup, я смог запросить вложенную коллекцию для документов с определенным именем, но я не знаю, как получить parent_document

 db.collectionGroup("subcollection").whereEqualTo("name", searchText).get()
                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        if(task.isSuccessful()){
                          //here I want to get the parent id of all results
                        }
                    }
                });

Каков наилучший способ достичь этого?

Ответы [ 2 ]

2 голосов
/ 20 мая 2019

QuerySnapshot указывает на количество QueryDocumentSnapshot экземпляров.

Из QueryDocumentSnapshot вы можете получить коллекцию, из которой:

snapshot.getRef().getParent()

И тогда родительский элемент DocumentReference будет:

snapshot.getRef().getParent().getParent()

получить вложенную коллекцию родительского документа с:

snapshot.getRef().getParent().getParent().collection("name_of_subcollection")

Да, я согласен ... это могло бы быть немного более читабельным.:)

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

Вы можете получить документы коллекции следующим образом:

if(task.isSuccessful()) {
        List<DocumentSnapshot> documents = task.getResult().getDocuments();
        for(DocumentSnapshot documentSnapshot : documents) {
            documentSnapshot.getId();
            // or any field documentSnapshot.get(field);
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...