Reputation: 575
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
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