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

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

В настоящее время водитель регистрирует автобус или трамвай, выбирая, с каким маршрутом / линией он работает.адрес электронной почты и пароль, которые размещаются в определенном узле в Firebase.Например, если драйвер выбирает красную линию, его UID помещается в шину Users => Drivers => RedLine =>.

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

Но когда это произойдет, я хочу, чтобы этот userID (userUID) был помещен в узел "driversAvailable" в разделе Branch, который является маршрутом, под которым указан UID в Users =>Драйверы, но я сражаюсь, чтобы найти ответы.

void saveGeoFire(){
    final String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();

    final DatabaseReference ref = FirebaseDatabase.getInstance().getReference("driversAvailable").child("drivers");
    final DatabaseReference driversRouteRef = FirebaseDatabase.getInstance().getReference().child("Users").child("Drivers");

    ValueEventListener driversAvailableEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()) // in Users => Driverrs => RedLine for example
            {
                //Create new Branch in "driversAvailable" => Drivers => RedLine => userID
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
        }
    };
driversRouteRef.addListenerForSingleValueEvent(driversAvailableEventListener);
}

Моя текущая база данных Firebase:

enter image description here

1 Ответ

0 голосов
/ 06 марта 2019

хорошо, так что после многих проб и ошибок я понял это, и это не так сложно, как я боялся.

void saveGeoFire(){
    final DatabaseReference yellowRef = FirebaseDatabase.getInstance().getReference().child("driversAvailable").child("drivers").child("YellowLine");
    final DatabaseReference redRef = FirebaseDatabase.getInstance().getReference().child("driversAvailable").child("drivers").child("RedLine");

    final String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();

    final DatabaseReference driversRouteRef = FirebaseDatabase.getInstance().getReference().child("Users").child("Drivers").child("Redline").child("bus");
    final DatabaseReference driversRouteRedRef = FirebaseDatabase.getInstance().getReference().child("Users").child("Drivers");
    ValueEventListener redRefEventListenter = new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if(dataSnapshot.exists()) {

                    if(dataSnapshot.child("RedLine").child("bus").getValue().toString().contains(userId)){
                        Toast.makeText(DriverMapActivity.this, "RedLinesuccess", Toast.LENGTH_SHORT).show();
                        GeoFire geoFire = new GeoFire(redRef);
                        geoFire.setLocation(userId, new GeoLocation(mLastLocation.getLatitude(),mLastLocation.getLongitude()));
                    }
                    if(dataSnapshot.child("YellowLine").child("bus").getValue().toString().contains(userId)){
                        Toast.makeText(DriverMapActivity.this, "YellowLine success", Toast.LENGTH_SHORT).show();
                        GeoFire geoFire = new GeoFire(yellowRef);
                        geoFire.setLocation(userId, new GeoLocation(mLastLocation.getLatitude(),mLastLocation.getLongitude()));
                    }

                }
        }

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

        }
    };
    driversRouteRedRef.addListenerForSingleValueEvent(redRefEventListenter);
}

Моя текущая база данных

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