Как обновить другой дочерний узел одновременно с firebase android - PullRequest
2 голосов
/ 07 января 2020

enter image description here

Я хочу обновить временной интервал на основе условий, например, когда пользователь забронировал время начала велосипеда 09:00 AM и время окончания 12:00 PM, затем я хочу обновить время Слот с 09:00 до 12:00. Наличие свободных мест. так возможно ли обновить другого ребенка одновременно. или, пожалуйста, дайте мне путь, как я могу это сделать.

                DatabaseReference ref= FirebaseDatabase.getInstance().getReference().child("TimeSlot").child(Common.BikeId);

            ref.orderByChild("TimeSlot").equalTo("10:00AM").addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                   //update children


                }

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

                }
            });

в приведенном выше коде только один дочерний элемент, который я мог бы обновлять за раз, как решить этот вид решения.

1 Ответ

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

Прежде всего , вы не можете сравнить String со временем startAt и endAt. Вместо этого используйте long значение типа [0 - 24] для хранения времени в 24-часовом формате.

А затем , выполните нижеприведенную операцию для обновления дочернего элемента isAvailable до false

DatabaseReference ref = FirebaseDatabase.getInstance().getReference()
        .child("TimeSlot")
        .child(Common.BikeId);

ref.orderByChild("time_slot")
        .startAt(9.0)
        .endAt(12.0)
        .addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                for(DataSnapshot childSnapshot: dataSnapshot.getChildren()) {

                    //Check whether child with key 'isAvailable' exist or not
                    if(childSnapshot.hasChild("isAvailable")) {

                        //Now update the status with false
                        ref.child(childSnapshot.getKey())
                                .child("isAvailable")
                                .setValue(false);
                    }
                }
            }

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

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