삽질 일지

[Kotlin] Firestore에서 특정 문서 불러오기

seoyamin 2022. 2. 9. 07:11

문제 상황

코틀린으로 안드로이드 개발을 하던 중, Firestore에서 특정 document를 불러와서 로컬의 객체에 저장하고자 하였다.

 

그러나 Firebase 공식 문서대로 코드를 작성하니 document.data 부분에 자꾸 'unsolved'되었다는 에러가 발생하였다. 또한 document의 각 field를 따로 불러오고 싶은데, 어떻게 코드를 작성해야 하는지 헤맸다.

 

val docRef = db.collection("AndroidUser").document(uid)
docRef.get()
        .addOnSuccessListener { document ->
            if (document != null) {
                Log.d(TAG, "DocumentSnapshot data: ${document.data}")
            } else {
                Log.d(TAG, "No such document")
            }
        }
        .addOnFailureListener { exception ->
            Log.d(TAG, "get failed with ", exception)
        }

 

 

 

해결 방법

document가 아닌, documentSnapshot을 이용하여 받아온 후, .result["field"] 를 이용하면 각 필드의 데이터를 따로 이용할 수 있다.

val docRef = db.collection("AndroidUser").document(uid)
                        docRef.get().addOnCompleteListener { snapshot ->
                            if(snapshot != null) {
                                val currentUser : CurrentUser = CurrentUser(
                                    snapshot.result["uid"].toString(),
                                    snapshot.result["email"].toString(),
                                    snapshot.result["name"].toString(),
                                    snapshot.result["fcmToken"].toString()
                                )
                               
                            }
                        }