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

时间:2020-04-10 01:29:52

标签: 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的预设ID:


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

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

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



编辑1

谢谢,现在将用户密钥设置为用户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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

尝试使用此代码为Firebase实时数据库创建自动生成的密钥

使用push()

myRef.child(APP_TABLE).child(USER_TABLE).push().setValue(detail)

使用身份验证当前UUID密钥

myRef.child(APP_TABLE).child(USER_TABLE).child(FirebaseAuth.getInstance().getCurrentUser().getUid()).setValue(detail)