как получить доступ к дочернему узлу родительского узла, не затрагивая другой дочерний узел в этом же узле? - PullRequest
0 голосов
/ 03 октября 2018

Я получил доступ к дочерним узлам этого пользователя.Но каждый раз, когда я пытаюсь обновить оценку и анализ одного ребенка, это повлияет на других, в результате чего у другого ребенка будет то же значение.

This is the firebase console

Это код, который я использую для доступа к детям в разделе «Пользователи» для оценки

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    Query query = rootRef.child("Users").orderByChild("username");

    ValueEventListener valueEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {        
            for(DataSnapshot ds : dataSnapshot.getChildren()) {
                    Map<String, Object> map = (Map<String, Object>) ds.getValue();
                    map.put("score", total);
                    ds.getRef().updateChildren(map);

            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            Log.d("TAG", databaseError.getMessage());
        }
    };
    query.addListenerForSingleValueEvent(valueEventListener);

Это код, который я использую для доступа к детям в разделе «Пользователи» для анализа

 DatabaseReference dr = FirebaseDatabase.getInstance().getReference();
        Query q = dr.child("Users").orderByChild("username");

        ValueEventListener vel = new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for(DataSnapshot ds : dataSnapshot.getChildren()) {
                    Map<String, Object> map = (Map<String, Object>) ds.getValue();
                    map.put("analysis", sev);
                    ds.getRef().updateChildren(map);
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Log.d("TAG", databaseError.getMessage());
            }
        };
        q.addListenerForSingleValueEvent(vel);
    }

Я должен обновить Анализ и Оценка, не затрагивая других детей

1 Ответ

0 голосов
/ 03 октября 2018

Используйте equalTo(theusername), чтобы указать, каких пользователей вы пытаетесь получить access-update:

Таким образом, запрос будет:

Query query = rootRef.child("Users").orderByChild("username").equalTo(theusername).child("score");

// или analysis вместо score

И в вашем слушателе:

ValueEventListener vel = new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for(DataSnapshot ds : dataSnapshot.getChildren()) {

                   // update the value here ...
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Log.d("TAG", databaseError.getMessage());
            }
        };
        q.addListenerForSingleValueEvent(vel);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...