【问题标题】:Not able to get the data from Firebase database - it returns a null value无法从 Firebase 数据库中获取数据 - 它返回一个空值
【发布时间】:2018-10-12 04:58:34
【问题描述】:

我正在尝试从 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: "nishant@gmail.com"
           driverName: "Nishant"
    customerRideId: "Sqpb6RFNhMOSiXeCrYj83aeeG7r2"

我想检索 customerRideId 的值,但在 logcat 中它显示空值请帮助我。

here is the database screenshot

DataBase Screen shot here

【问题讨论】:

    标签: android database firebase null return


    【解决方案1】:

    要获取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 的值仍然为空
    • 在这种情况下,请通过添加真实的数据库结构(屏幕截图就足够了)和您用于获取数据的代码来编辑您的问题,以便更清楚地查看问题所在。
    • 我已经添加了屏幕截图,请检查一下
    • 现在更清楚了。请查看我更新的答案,刚刚删除了 child() 方法调用。有用吗?
    【解决方案2】:

    试试这个代码..

            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) {
    
            }
        });
    

    【讨论】:

    • 但是你的代码和我的代码没有区别
    【解决方案3】:

    确保您在 gradle 中添加了适当的依赖项,并且 firebase 数据库中有一些数据 如果所有这些都很好,请尝试:

    private FirebaseDatabase database;
    

    在你的方法中:

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

    【讨论】:

    • 它仍然是空值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 2019-05-06
    • 2017-10-13
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    相关资源
    最近更新 更多