Как получить данные для сбора данных из пожарного магазина - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть коллекция TripInfo, следующая с идентификатором пользователя, и затем я создал подколлекцию с автоматической генерацией идентификатора для каждого документа.Проблема в том, что я не могу получить данные, используя следующий код:

private void checkDataExistingDate() {
    db.collection("TripsInfo").document(UID).collection("Individual_Trip").document()
            .get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<DocumentSnapshot> task) {
            if (task.getResult().exists()){
                DocumentSnapshot snapshot = task.getResult();

                Map<String, Object> map = snapshot.getData();
                for (Map.Entry<String, Object> entry : map.entrySet()) {

                        Log.d(Tag, "All data"+entry.getValue().toString());

                }

            }

        }
    });

Или мне нужно хранить без подколлекции?В реальном времени мы использовали push для генерации автоматического идентификатора, но здесь я не знаю, что эквивалентно созданию ключа после помещения идентификатора пользователя в документ.

1 Ответ

0 голосов
/ 22 февраля 2019

Предположим, у вас есть идентификатор пользователя с параметром uid в коллекции TripsInfo, а также индивидуальная_трипция в качестве вложенной коллекции в коллекции TripsInfo.Вы можете получить подобранные коллекции.

FirebaseFirestore.getInstance().collection("TripsInfo")
                .get()
                .addOnCompleteListener(
                        new OnCompleteListener<QuerySnapshot>() {
                            @Override
                            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                                if (task.isSuccessful()) {
                                    for (QueryDocumentSnapshot document : task.getResult()) {
                                        if (FirebaseAuth.getInstance().getUid().equalsIgnoreCase(document.getString("uid"))) {
                                            document.getReference()
                                                    .collection("Individual_Trip")
                                                    .get()
                                                    .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                                                        @Override
                                                        public void onComplete(@NonNull Task<QuerySnapshot> task) {
                                                            list = task.getResult().toObjects(Individual_Trip.class);
                                                            showListOfRequest();
                                                        }
                                                    })
                                                    .addOnFailureListener(new OnFailureListener() {
                                                        @Override
                                                        public void onFailure(@NonNull Exception e) {
                                                            hideProgress();
                                                        }
                                                    });

                                            break;
                                        }
                                    }
                                }
                            }
                        });
FirebaseAuth.getInstance().getUid().equalsIgnoreCase(document.getString("uid"))

эта строка предназначена для проверки идентификатора пользователя, когда у вас есть несколько данных в вашей коллекции TripsInfo.

вы также можете использовать whereEqualTo длячто, FirebaseFirestore.getInstance().collection("TripsInfo") .whereEqualTo("userId", "uid").get()...

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