Не удалось получить данные из базы данных Firebase - возвращает нулевое значение

Я пытаюсь получить данные из Firebase:

 DatabaseReference customerRef = FirebaseDatabase.getInstance().getReference("Drivers").child(driverId).child("customerRideId");
 Log.d("TAG_SiX",customerRef.toString());

 customerRef.addValueEventListener(new ValueEventListener() {
     @Override
     public void onDataChange(DataSnapshot dataSnapshot) {
        // retriveCustomerID(dataSnapshot);
         Log.d("TAG_eight",dataSnapshot.toString());
         Map<String,String> map = 
           (Map<String,String>)dataSnapshot.getValue();

     }

     @Override
     public void onCancelled(DatabaseError databaseError) {

     }
 });

Вот значение logcat

D/TAg_five: DataSnapshot { key = customerRideId, value = null }

05

Вот структура данных Firebase, мне нужно значение customerRideId, которое в logcat показывает null, а customerRideId находится в DriverID.

Drivers
    PyltxOLXcWfZf6itgJEMWC4ylDu2
           driverEmail: "[email protected]"
           driverName: "Nishant"
    customerRideId: "Sqpb6RFNhMOSiXeCrYj83aeeG7r2"

Я хочу получить значение customerRideId, но в logcat оно показывает нулевое значение, пожалуйста, помогите мне в этом.

here is the database screenshot

Снимок экрана базы данных здесь

0
0
131
3

Ответы 3

убедитесь, что вы добавили соответствующие зависимости в gradle и есть некоторые данные в базе данных firebase Если все это хорошо, попробуйте:

private FirebaseDatabase database;

В вашем методе:

database=FirebaseDatabase.getInstance();
DatabaseReference customerRef = database.getReference("Drivers/"+driverId+"/customerRideId");

он все еще получает нулевое значение

nishant mehra 03.05.2018 05:41

Попробуйте этот код ..

        DatabaseReference customerRef = FirebaseDatabase.getInstance().getReference();
    Query query1=customerRef.child("Drivers").child(customerRef.getKey()).child("customerRideId");
    Log.d("TAG_SiX", customerRef.toString());
    query1.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            // retriveCustomerID(dataSnapshot);
            Log.d("TAG_eight", dataSnapshot.toString());
            Map<String, String> map =
                    (Map<String, String>) dataSnapshot.getValue();

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

Но нет разницы в вашем коде и моем коде

nishant mehra 03.05.2018 05:44

Чтобы получить значение вашего свойства customerRideId, используйте следующий код:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference driverIdRef = rootRef.child("Drivers");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String customerRideId = dataSnapshot.child("customerRideId").getValue(String.class);
        Log.d("TAG", customerRideId);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
driverIdRef.addListenerForSingleValueEvent(valueEventListener);

Результатом будет: Sqpb6RFNhMOSiXeCrYj83aeeG7r2.

Не работает Alex Mamo, все равно значение null

nishant mehra 03.05.2018 05:43

В этом случае отредактируйте свой вопрос, добавив реальную структуру базы данных (достаточно снимка экрана) и код, который вы используете для получения данных, чтобы более четко увидеть, в чем проблема.

Alex Mamo 03.05.2018 11:33

Я добавил снимок экрана, пожалуйста, проверьте это

nishant mehra 04.05.2018 05:29

Теперь все более ясно. См. Мой обновленный ответ, только что удален вызов метода child(). Это работает?

Alex Mamo 04.05.2018 10:34

Другие вопросы по теме