使用Firebase push()方法为用户提供唯一的子键值

Afr*_*rid 1 android firebase firebase-realtime-database

如何在中提供用户定义的键值push(),而不是通过push创建的唯一值?

这是当前正在执行的操作:

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

mRef.child("users").push().setValue(user);
Run Code Online (Sandbox Code Playgroud)

Muz*_*Muz 6

.push() 将创建一个具有唯一参考的新项目。

您可以改用updateChildren()更新。例如,

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);
Run Code Online (Sandbox Code Playgroud)

您可能必须在User类中添加类似于以下内容的内容。

@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;
}
Run Code Online (Sandbox Code Playgroud)