我想从我的数据库中检索特定数据,但是我不确定这样做的最快方法。这是我在数据库中存储数据的方式:
我想获取给定名称(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);
但是代码不起作用。有人可以告诉我应该以什么方式检索此特定数据,什么是最好的方法。非常感谢
答案 0 :(得分:3)
您不需要执行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