База данных Firebase Realtime - автоматическая генерация первичного ключа - PullRequest
1 голос
/ 10 апреля 2020

Я записываю некоторые данные в базу данных Firebase Realtime.

Класс пользователя

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)
    }

}


Использование выше, я могу создать запись пользователя с предустановленным идентификатором 1:


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

Я, очевидно, хочу, чтобы идентификатор автоматически генерировался при создании.

Мне известно о пу sh (), но я не уверен, как это реализовать.



Редактировать 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 ]

1 голос
/ 10 апреля 2020

Просто позвоните pu sh () вместо child(userId):

mDatabase.child("users").push().setValue(user)
0 голосов
/ 10 апреля 2020

попробуйте этот код, чтобы создать автоматически сгенерированный ключ для базы данных реального времени firebase

Использование pu sh ()

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

Использование аутентификации Current UUID ключ

myRef.child(APP_TABLE).child(USER_TABLE).child(FirebaseAuth.getInstance().getCurrentUser().getUid()).setValue(detail)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...