如何从Firebase获取特定键的特定子值

时间:2019-12-06 05:44:29

标签: java android firebase firebase-realtime-database

我具有以下Firebase数据库结构。因此,我需要针对d_avtr, d_nme,v_No,v_nme,v_tpe分别提取key is equal to specific mobile no值以分别保存在变量中

enter image description here

我已经尝试过

 String Mobileno=localSharedPreferences.getSharedPreferences(Constants.PhoneNumber);

            mDatabase= FirebaseDatabase.getInstance().getReference().child("Driver");

            if(mDatabase.getKey().startsWith(Mobileno)) {

                String driver_name = mDatabase.child("d_nme").toString();
                String driver_avator = mDatabase.child("d_avtr").toString();
                String vehicle_no = mDatabase.child("v_No").toString();
                String vehicle_name = mDatabase.child("v_nme").toString();
                String vehicle_type = mDatabase.child("v_tpe").toString();

                String firstname = driver_name;
                String lastname = vehicle_name;
                String avatorurl = driver_avator;
                String ratings = vehicle_no;

           }

但是它不起作用。我该如何实现

1 个答案:

答案 0 :(得分:2)

要检索值,您需要执行以下操作:

DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Driver");

reference.orderByKey().equalTo("1815000000").addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot datas: dataSnapshot.getChildren()){
            String driver_name = datas.child("d_nme").getValue(String.class);
            String driver_avator = datas.child("d_avtr").getValue(String.class);
            String vehicle_no = datas.child("v_No").getValue(String.class);
            String vehicle_name = datas.child("v_nme").getValue(String.class);
            String vehicle_type = datas.child("v_tpe").getValue(String.class);
        }
    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
});

首先添加对节点Driver的引用,然后使用查询orderByKey()获取该键下的值,附加一个侦听器,然后在key内进行迭代并检索这些值。 / p>