Firebase Cloud Firestore по ссылке - PullRequest
0 голосов
/ 11 мая 2018

Я получил queryDocumentSnapshot со следующим кодом:

mFireStore = FirbaseFirestore.getInstance();
mFireStore.collection("myCollection").addSnapshotListener(new EventListener<QuerySnapshot>() {
            @Override
            public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
                for (DocumentChange doc : queryDocumentSnapshots.getDocumentChanges()) {
                    if (doc.getType() == DocumentChange.Type.ADDED) {
                        // Set some data from the doc.getDocument here

mFireStore.collection("myCollection").document(doc.getDocument().getId()).collection("subCollection").get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                                    @Override
                                    public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                                        if (queryDocumentSnapshots.isEmpty()){
                                            // not found
                                        } else{

                                            List<DocumentSnapshot> hosts = queryDocumentSnapshots.getDocuments();

                                            for (int i = 0; i < hosts.size(); i++){
                                                // Each hosts DocumentSnapshot has a "host" field which contains a reference to a document
                                                // I'd like to follow this reference and get that document
                                            }
                                        }
                                    }
                                });

Моя проблема в том, что как только я получу список хостов DocumentSnapshots, я бы хотел следовать за их полем "хост", которое содержит ссылку на документ. Я хотел бы перейти по этой ссылке и получить документ на другом конце, но не знаю как. Если вы заметили какие-либо другие проблемы с моей логикой, не стесняйтесь указывать на это, так как я новичок в Cloud Firestore.

1 Ответ

0 голосов
/ 11 мая 2018

Чтобы решить эту проблему, вы можете просто перебрать список hosts. Если ваше поле host содержит ссылку как String, используйте следующие строки кода:

for (DocumentSnapshot ds : hosts) {
    String host = ds.getString("host");
    Log.d("TAG", host);
}

Если ваше поле host содержит ссылку как DocumentReference, используйте следующую строку кода:

DocumentReference host = ds.getDocumentReference("host");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...