안드로이드 앱 개발

RealtimeDB에 데이터 중복체크를 하고 싶다... - Kotlin 본문

카테고리 없음

RealtimeDB에 데이터 중복체크를 하고 싶다... - Kotlin

스텝바이스텝안드로이드 2021. 5. 24. 23:36

Firebase RealtimeDB를 사용하면서 데이터 중복저장을 막기 위해

저장하려고하는 값이 이미 존재하는지 확인해야하는 상황이 있다.

 

예를 들면,

고객데이터를 저장하는데, 동일한 번호로 중복을 막는 상황

private fun isVaildNumberCheck(){
        //전화번호 중복 체크
        database.child("users").child(uid).child("customers").orderByChild("customerNumber").equalTo(customerNumber)
            .addListenerForSingleValueEvent(object : ValueEventListener {
                override fun onDataChange(dataSnapshot: DataSnapshot) {
                    if (!dataSnapshot.exists()) {
                        mCreateCustomer()
                    } else {
                        mShowShortToast("이미 등록된 번호입니다")
                    }
                }

                override fun onCancelled(databaseError: DatabaseError) {
                    Toast.makeText(applicationContext,
                        databaseError.message,
                        Toast.LENGTH_SHORT).show()
                }
            })
    }

 

//전화번호로 중복 체크를 한다.

addValueEventListner를 달았을 때는 오류가 있어서

addListenerForSingleValueEvent로 바꿨더니 잘 작동한다.

 

 

 

Version 2

이메일 중복체크를 해보았다.

private fun emailDuplicateCheck(){
        //이메일 중복 체크
        database.child("users").orderByChild("email").equalTo(emailStr)
            .addListenerForSingleValueEvent(object : ValueEventListener {
                override fun onDataChange(dataSnapshot: DataSnapshot) {
                    if (!dataSnapshot.exists()) {
                        val intent = Intent(applicationContext, ActivityJoin1::class.java)
                        intent.putExtra("email", emailStr)
                        intent.putExtra("password", passwordStr)
                        startActivity(intent)
                    } else {
                        mShowShortToast("이미 존재하는 이메일 계정이 있습니다.")
                    }
                }

                override fun onCancelled(databaseError: DatabaseError) {
                    Toast.makeText(applicationContext,
                        databaseError.message,
                        Toast.LENGTH_SHORT).show()
                }
            })
    }