Я пытаюсь получить данные из 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
убедитесь, что вы добавили соответствующие зависимости в gradle и есть некоторые данные в базе данных firebase Если все это хорошо, попробуйте:
private FirebaseDatabase database;
В вашем методе:
database=FirebaseDatabase.getInstance();
DatabaseReference customerRef = database.getReference("Drivers/"+driverId+"/customerRideId");
Попробуйте этот код ..
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) {
}
});
Но нет разницы в вашем коде и моем коде
Чтобы получить значение вашего свойства 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
В этом случае отредактируйте свой вопрос, добавив реальную структуру базы данных (достаточно снимка экрана) и код, который вы используете для получения данных, чтобы более четко увидеть, в чем проблема.
Я добавил снимок экрана, пожалуйста, проверьте это
Теперь все более ясно. См. Мой обновленный ответ, только что удален вызов метода child()
. Это работает?
он все еще получает нулевое значение