Realtime Database orderByChild 사용법

Lee HyeongJong·2022년 9월 2일
0

안드로이드

목록 보기
15/43

1. orderByChild와 equalTo

Repo.kt

    fun getCommentData(cafeName : String) : LiveData<MutableList<ReviewData>> {

        val mutableData = MutableLiveData<MutableList<ReviewData>>()
        val database = Firebase.database("https://coffeezoo-30c55-default-rtdb.asia-southeast1.firebasedatabase.app/")
        val myRef = database.getReference("ReviewData").orderByChild("cafeName").equalTo(cafeName)

        myRef.addValueEventListener(object : ValueEventListener {

            val listData : MutableList<ReviewData> = mutableListOf<ReviewData>()

            override fun onDataChange(snapshot: DataSnapshot) {

                if (snapshot.exists()){

                    listData.clear() //실시간 데이터 업데이트 시 리사이클러뷰 데이터 중복 방지

                    for ( userSnapshot in snapshot.children ){

                        val getData = userSnapshot.getValue(ReviewData::class.java)
                        listData.add(getData!!)

                        mutableData.value = listData

                    }

                }

            }

            override fun onCancelled(error: DatabaseError) {



            }


        })
        return mutableData

    }

orderByChild는 key값, equalTo는 그 key값의 value 값이다.
해당 key값의 value가 같은 값을 모두 찾아 나열할 수 있다.

2. 뷰모델

    fun fetchCommentData(cafeName : String) : LiveData<MutableList<ReviewData>> {

        val mutableData = MutableLiveData<MutableList<ReviewData>>()

        repo.getCommentData(cafeName).observeForever {

            mutableData.value = it

        }
        return mutableData

    }
profile
코딩을 시작해보자

0개의 댓글