Получить пользовательское поле из FireStore android - PullRequest
0 голосов
/ 06 января 2020

Здравствуйте, я хочу получить поле "ID" в коллекции "Избранное" от всех пользователей.

FirebaseDatabase.getInstance().getReference("Favorite")
    .addValueEventListener(new ValueEventListener(){ 
        @Override 
            public void onDataChange(DataSnapshot dataSnapshot) { 
                for (DataSnapshot dst : dataSnapshot.getChildren()) { 
                //Key stores KjfLmUnPUaWeYDETp04 and PlamHmUnPUaWeYDETp04 String key = dst.getKey(); Log.d("Idsssss", key);
                }
            }
    });

enter image description here

            String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
            FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
            CollectionReference favoriteRef = rootRef.collection("usersFavorite").document(firebaseAuth.getCurrentUser().getUid()).collection("Favorite");
            favoriteRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        for (QueryDocumentSnapshot document : task.getResult()) {
                            Log.d("TAGTAGTAG", document.getString("id"));
                        }
                    }
                }
            });

Но это не работает, я хочу чтобы получить весь идентификатор документа из всего документа, и когда я хочу получить идентификатор документа, он получает только первый идентификатор (потому что это тот же идентификатор для пользователя) с помощью этой команды String id = FirebaseFirestore.getInstance (). collection ("usersFavorite") .document (firebaseAuth.getUid ()). collection ("Favorite"). document (firebaseAuth.getUid ()). getId ();

Готово, и мой путь - usersFavorite => UserId => Favorite => Случайный идентификатор => затем Список избранных, которые я хочу получить идентификаторы

Это моя структура базы введите описание изображения здесь

1 Ответ

1 голос
/ 06 января 2020

Вы делитесь снимком экрана с базой данных Firestore, когда пытаетесь использовать код, который получает данные из базы данных Firebase Realtime, и это не будет работать, поскольку Cloud Firestore и база данных Firebase Realtime - это два разных продукта. Чтобы получить идентификаторы этих документов, используйте следующие строки кода:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference favoriteRef = rootRef.collection("usersFavorite").document(uid).collection("Favorite");
favoriteRef.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.getString("id"));
            }
        } else {
            Log.d("TAG", task.getException().getMessage());
        }
    }
});

В результате в logcat будут выведены все значения свойства id.

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