Afrid
Afrid

Reputation: 69

Give unique child Key value for User using Firebase push() Method

How to give user defined key value in push(), instead of unique value created by push?

This is what am currently doing:

User user = new User(Editname.getText().toString(),
      Editpid.getText().toString(),Editsem.getText().toString());

mRef.child("users").push().setValue(user);

Upvotes: 1

Views: 3327

Answers (3)

Ojonugwa Jude Ochalifu
Ojonugwa Jude Ochalifu

Reputation: 27257

This is one way to do it assuming we want to use the User's name as unique key:

User user = new User(Editname.getText().toString(),
  Editpid.getText().toString(),Editsem.getText().toString());

 String uniqueKey = user.getName();
 //You could use something else for quick reference since two users can have the same name
 mDatabaseReference.child("users").child(uniqueKey).push().setValue(user);

Upvotes: 0

Frank van Puffelen
Frank van Puffelen

Reputation: 599131

Simplest way is to specify the child key with the child method:

User user = new User(Editname.getText().toString(),
     Editpid.getText().toString(),Editsem.getText().toString());

mRef.child("users").child(user.pid).setValue(user);

Where I specify user.pid, you can use whatever unique key you use to identify the user (typically when using Firebase Authentication this would be user.getUid()).

Upvotes: 2

Muz
Muz

Reputation: 5980

.push() will create a new item with a unique reference.

You can use updateChildren() to update instead. For example,

User user=new User(Editname.getText().toString(),Editpid.getText().toString(),Editsem.getText().toString()); 
Map<String, Object> itemValues = user.toMap();
Map<String, Object> childUpdates = new HashMap<>();

// Define the key value here
String username = "yourKeyValueHere";
childUpdates.put("/users/" + username, itemValues);
mDatabase.updateChildren(childUpdates);

You might have to add something similar to the following to your User class.

@Exclude
public Map<String, Object> toMap() {
    HashMap<String, Object> result = new HashMap<>();
    result.put("name", name);
    result.put("pid", pid);
    result.put("sem", sem);
    return result;
}

Upvotes: 6

Related Questions