Firebase извлекает родительские данные, используя дочерние данные в Android - PullRequest
0 голосов
/ 30 апреля 2018

Как я могу получить родителя, используя его дочерний идентификатор пользователя? Поскольку я получаю идентификатор пользователя только тогда, когда пользователь входит в систему. Я хочу перечислить всю их еду, используя его идентификатор пользователя.

enter image description here

Ответы [ 3 ]

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

Вы можете использовать orderByChild и equalTo для получения снимка объекта питания, после чего получите ключ foodSnapshot

final Query userQuery = FirebaseDatabase.getInstance().getReference().child("Food").orderByChild("uid");

    userQuery.equalTo("BNeBA...........").addListenerForSingleValueEvent(
        new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot foodSnapshot: dataSnapshot.getChildren()) {
                    // result
                    String key = foodSnapshot.getKey();
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        }
    );

ref: https://firebase.google.com/docs/database/android/lists-of-data

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

это код, который работает для меня.

        DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users");

    ref.child(uid).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String name = (String) dataSnapshot.child("u_username").getValue();
            show_username.setText(name);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
0 голосов
/ 30 апреля 2018

Эти ключи создаются методом push(), вы должны получить эти ключи после того, как получите свой снимок экрана с getKey()

после вызова вашего d atasnapshot.getChildren() вы должны сделать строку

String myParentKey = datasnapshot.getKey().toString();

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

 public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
            String myParentKey = childSnapshot.getKey().toString();

....

надеюсь, это поможет!

Удачного кодирования!

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