как извлечь конкретного левого и правого потомка из базы данных Firebase - PullRequest
0 голосов
/ 28 января 2019

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

Это моя база данных

enter image description here

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

 public void methodForBinary( final String userId){




            final DatabaseReference myRef = database.getReference("users/" + userId);

            myRef.addListenerForSingleValueEvent(new ValueEventListener() {
                String left, right, name, rank;

                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {


                    //Toast.makeText(Binary.this, , Toast.LENGTH_LONG).show();
                    //if ()
                    left = dataSnapshot.child("left").getValue().toString();
                    right = dataSnapshot.child("right").getValue().toString();
                    name = dataSnapshot.child("name").getValue().toString();
                    rank = dataSnapshot.child("rank").getValue().toString();

                    NameAndEarnings nameAndEarnings = new NameAndEarnings(name, userId, left, right, rank);
                    list.add(nameAndEarnings);
                    //methodforbinarycreation(list);


            if (!left.equals("0")) {
                methodForBinary(left);
            }
            if (!right.equals("0")) {
                methodForBinary(right);
            }

                    if (left.equals("0")&& right.equals("0")&&  list != null) {
                        binary.methodinBinary(list);
                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });



}

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

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