d0pestar
d0pestar

Reputation: 575

HOW TO Update where in firebase realtime database?

I have a database with autogenerated primary keys. Look here:

data 
------0
-----------id
-----------name
------1
-----------id
-----------name

and so on.

I don't know primary keys and I wanna update name by specific id. How can I do that?

Upvotes: 0

Views: 4463

Answers (1)

Tabish Hussain
Tabish Hussain

Reputation: 852

for that first create a class

public class User {

int id;
String name;

public User(int id, String name){
  this.id = id;
  this.name = name;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}
}

Then get the db object you want to update

DatabaseReference dbRef = firebaseDatabase.getReference("YOUR_DB_NAME");
Query query = dbRef
            .orderByChild("id")
            .equalTo("ID_OF_THE_USER");
    query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
                Log.d(TAG, dataSnapshot1.getKey() + "  " + dataSnapshot1.getValue(Profile.class)
                        .toString());
                updateUser(dataSnapshot1.getKey(),"ID_OF_THE_USER", "New_Name");
               }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

private void updateUser(DatabaseReference db,int key, String id, String name,) {
    User user = new User(id, name);
    Map<String, Object> postValues = post.toMap();
    Map<String, Object> childUpdates = new HashMap<>();
    childUpdates.put("/data/" + key, postValues);
    db.updateChildren(childUpdates);
}

Hope it will help you ....

Upvotes: 3

Related Questions