Ограничить количество дочерних элементов, добавляемых в базу данных firebase realtime

#java #android #firebase #firebase-realtime-database

#java #Android #firebase #firebase-realtime-database

Вопрос:

введите описание изображения здесь

Как ограничить количество дочерних элементов, добавляемых в 02 из firebase или Java-кода в Android. Я собираюсь добавить дочерний элемент из приложения для Android, которое я создал. И я хочу отправить сообщение пользователю, если количество дочерних элементов 02 уже равно 100. Я пытался

 DatabaseReference dref=FirebaseDatabase.getInstance().getReference()
                    .child("Root").child("Time").child(2019).child(April).child(02);
dref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            numberofpatients=dataSnapshot.getChildrenCount();
        }
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
  

не работает;

также пробовал

 dref.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            numberofpatients=dataSnapshot.getChildrenCount();
        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            numberofpatients=dataSnapshot.getChildrenCount();
        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
            numberofpatients=dataSnapshot.getChildrenCount();
        }

        @Override
        public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            numberofpatients=dataSnapshot.getChildrenCount();
        }

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

        }
    });
  

после получения количества я использую следующее, чтобы проверить условие

     if(numberofpatients>=3){
        android.support.v7.app.AlertDialog.Builder alert=
                new android.support.v7.app.AlertDialog.Builder(
                        FillForm.this);
        alert.setTitle("List Full");
        alert.setMessage("Select another date!");
        alert.setCancelable(false);
        alert.setPositiveButton("Okay",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        mDateSpinner.requestFocus();
                    }
                });

        alert.show();
    }
  

Пожалуйста, помогите, нужна только идея.

Комментарии:

1. Я понял. моя проблема заключалась в проверке условия вне onDataChange метода

Ответ №1:

Вы должны выполнить цикл и получить количество дочерних элементов в child («02»)

пример

 FirebaseDatabase.getInstance().getReference().child("Time/2019/April/02").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if (dataSnapshot.getChildrenCount()==100){

                 //code here
                }

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });