How to get an object from Firebase Realtime Database?

Mário Fernandes

In my app I have a User class that stores user information, I save it to Firebase Realtime Database as follows:

mDbReference.child("UserData").child(getUser().getUid()).setValue(user);

Now in another part of the app I want to retrieve that User object, but the app crashes. It works if I use snapshot.getValue().toString() but I want to save it in an User object like below:

Query usernameQuery = fHelper.getDbReference().child("UserData")
                        .orderByChild("userName")
                        .equalTo(userCredentialEditText.getText().toString().trim());
    
                usernameQuery.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot snapshot) {
                        User user = (User) snapshot.getValue(User.class);
                        assert user != null;
                        Log.i("Snapshot", user.getUserEmail());
                    }
    
                    @Override
                    public void onCancelled(@NonNull DatabaseError error) {
    
                    }
                });

I get this error:

2021-04-19 22:40:34.769 15372-15372/com.outwire E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.outwire, PID: 15372
    java.lang.NullPointerException: println needs a message
        at android.util.Log.println_native(Native Method)
        at android.util.Log.i(Log.java:176)
        at com.outwire.login.LoginActivity$1.onDataChange(LoginActivity.java:173)
        at com.google.firebase.database.Query$1.onDataChange(Query.java:191)
        at com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75)
        at com.google.firebase.database.core.view.DataEvent.fire(DataEvent.java:63)
        at com.google.firebase.database.core.view.EventRaiser$1.run(EventRaiser.java:55)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:224)
        at android.app.ActivityThread.main(ActivityThread.java:7565)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
Frank van Puffelen

When you execute a query against the Firebase Database, there will potentially be multiple results. So the snapshot contains a list of those results. Even if there is only a single result, the snapshot will contain a list of one result.

Your onDataChange needs to handle this list, even if there's only a single result, by looping over snapshot.getChildren().

So something like:

Query usernameQuery = fHelper.getDbReference().child("UserData")
        .orderByChild("userName")
        .equalTo(userCredentialEditText.getText().toString().trim());

usernameQuery.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot snapshot) {
        for (DataSnapshot userSnapshot: snapshot.getChildren()) {
            User user = userSnapshot.getValue(User.class);
            assert user != null;
            Log.i("Snapshot", user.getUserEmail());
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError error) {
        throw error.toException(); // never ignore errors
    }
});

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

How to get imageUrl from firebase storage to store in firebase realtime database?

How to deal with object from Firebase Realtime Database in Flutter

How do I get data from firebase realtime database in web?

Android Studio - How to get value from FireBase Realtime Database

how to get string array from firebase realtime database

How to get Firebase Realtime Database reference from Unity Desktop build?

How to get data from Firebase Realtime Database and show it in a spinner?

How to get values from different child in firebase realtime database?

How to get the last data from realtime database of firebase in Android

How to get elements from a condition node in a Realtime Database Firebase

how to get and display data from firebase realtime database?

How can I get the latest record from Firebase Realtime Database

How to get single item from firebase realtime database?

How to get value from firebase realtime database in android?

How to get the data from firebase realtime database in react js?

How to get a specific value from firebase realtime database using kotlin

Get images from firebase storage and realtime database

How to get the Firebase Realtime Database AuthToken

How to get data of firebase realtime database

How to get status of Firebase Realtime Database operation?

How to read data from the Firebase realtime database

How to retrieve a username from firebase realtime database

How to retrieve data from realtime database in Firebase?

How to delete from firebase realtime database?

How to remove listener from Firebase Realtime Database

How to delete from firebase realtime database,

How to select data from firebase realtime database

How do I get database from Firebase Realtime Database for the first time the android app is installed

Get information from Firebase Realtime Database with Firebase Admin SDK