Самый быстрый способ получить конкретные данные из базы данных Firebase в реальном времени? - PullRequest
1 голос
/ 26 октября 2019

Я хочу получить конкретные данные из моей базы данных, но я не уверен, что это самый быстрый способ сделать это. Вот как у меня есть данные в базе данных:

enter image description here

Я хочу получить строку String в значении "profilePic" для данного имени (users-> Aleem-> 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);

Но код не работает. Может кто-нибудь сказать мне, каким образом я должен получать эти конкретные данные и как это сделать. Большое спасибо

1 Ответ

3 голосов
/ 26 октября 2019

Вам не нужно делать запрос 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...