Home » Android » Get last node in Firebase database Android

Get last node in Firebase database Android

Posted by: admin May 14, 2020 Leave a comment

Questions:

I want to get item in the last node added in firebase database from my Android. You can see on the image below i’m not sure how to get the specific node, because unique key is created by Firebase. How to reference to auto-created node and child inside? Thanks a lot

The last node

enter image description here

How to&Answers:

Try this:

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
Query lastQuery = databaseReference.child("mp").orderByKey().limitToLast(1);
lastQuery.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String message = dataSnapshot.child("message").getValue().toString();
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        // Handle possible errors.
    }
});

Hope this helps!

Answer:

Try this it will work
Database Reference db;

db=FirebaseDatabase.getInstance().getReference().child("mp");
        Query query = db.orderByKey().limitToLast(1);
       query.addListenerForSingleValueEvent(new ValueEventListener() {
           @Override
           public void onDataChange(DataSnapshot dataSnapshot) {
               for (DataSnapshot child: dataSnapshot.getChildren()) {
                   Log.d("User key", child.getKey());
                   Log.d("User val", child.child("message").getValue().toString());

               }

           }

           @Override
           public void onCancelled(DatabaseError databaseError) {

           }``
       });;

Answer:

I prefer to write and retrieve data through objects.
MyObject is POJO.

@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    for (DataSnapshot data : dataSnapshot.getChildren()) {
        MyObject myObject = data.getValue(MyObject.class);
        Log.i(TAG, data.getKey() + " = " + myObject.toString());
    }
}

Answer:

console.log(‘last messages’, messages[messages.length-1]);