android - Firebase 实时数据库 - 自动生成主键

标签 android firebase firebase-realtime-database

我正在将一些数据写入 Firebase 实时数据库。

用户类

data class User(
    @Exclude var userId: String? = "",
    var username: String? = "",
    var email: String? = ""
)

写函数
class MainActivity : AppCompatActivity() {

    private lateinit var mDatabase: DatabaseReference

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        mDatabase = FirebaseDatabase.getInstance().reference

        bt_register_button.setOnClickListener {
            val username = et_register_username.text.toString()
            val email = et_register_email.text.toString()

            writeNewUser("1", username, email)
        }

    }

    private fun writeNewUser(userId: String, username: String, email: String?) {
        val user = User(username, email)
        mDatabase.child("users").child(userId).setValue(user)
    }

}

使用上面的方法,我可以创建一个预设 ID 为 1 的用户记录:

users
     1
          email: "bill@gmail.com"
          username: "bill"

我显然希望在创建时自动生成 Id。

我知道 push() 函数,但我不确定如何实现它。

编辑 1

谢谢,用户 key 现在被设置为用户 UID(来自身份验证):
    private fun writeNewUser(name: String, email: String?) {
        val user = User(name, email)
        mDatabase.child("Users").child(mAuth.currentUser!!.uid).setValue(user)
    }

Authentication + Write Database Result

最佳答案

只需调用push()而不是 child(userId) :

mDatabase.child("users").push().setValue(user)

关于android - Firebase 实时数据库 - 自动生成主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61132739/

相关文章:

android - Travis CI 运行 python 脚本

java - 更改 NavigationView 中项目的样式

angular - 注销时如何摆脱 "Error: permission_denied"? ( Angular -Firebase)

swift - 尝试从 Firebase 检索数据时未调用 tableView(_ tableView : UITableView, cellForRowAt indexPath: IndexPath) 函数

ios - addAuthStateDidChangeListener 被调用两次的问题

java - RecyclerView 与 Firebase 搜索在搜索时显示所有产品

android - 无法连接到 Gradle 守护程序。运行时 'flutter run'

android - 使用 navigateUpFromSameTask() 从 Activity 返回

ios - 嵌套条件属性时如何查询 Firebase 数据库对象?

firebase - 文档和对象( map )有什么区别