从Firebase实时数据库检索特定数据的最快方法?

问题描述 投票:0回答:1

我想从数据库中检索特定的数据,但不确定是否最快的方法。这就是我在数据库中存储数据的方式:

enter image description here

我想为给定名称(users-> Aleem-> profilePic)在“ profilePic”值中显示字符串。

这是我试图获取数据的方式:

String profilePicUri="";
String searchFor="any Name";
String url = "https://as*******.firebaseio.com/users.json";

StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>(){
    @Override
    public void onResponse(String s) {
            try {
                JSONObject obj = new JSONObject(s);

                if(obj.getJSONObject(searchFor).getString("users").equals(searchFor)){
                    profilePicUri=obj.getJSONObject(searchFor).getString("profilePic");


                }

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }


    }
},new Response.ErrorListener(){
    @Override
    public void onErrorResponse(VolleyError volleyError) {
        System.out.println("" + volleyError);

    }
});

RequestQueue rQueue = Volley.newRequestQueue(Login.this);
rQueue.add(request);

但是该代码不起作用。有人可以告诉我应该以什么方式检索此特定数据,什么是最好的方法。非常感谢

java android firebase firebase-realtime-database
1个回答
2
投票

您不需要执行get请求,firebase已经提供了自己的api。要检索数据,您需要执行以下操作:

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("users").child("Aleem");
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
           String profilePic = dataSnapshot.child("profilePic").getValue(String.class);
           String password   = dataSnapshot.child("password").getValue(String.class);
    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
});

首先添加对节点Aleem的引用,然后附加一个侦听器,您将可以在Aleem下检索数据。

在此处查看更多信息:

https://firebase.google.com/docs/database/android/read-and-write

© www.soinside.com 2019 - 2024. All rights reserved.