마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

data class를 firebase realtime database에 저장했을때 의문점

0 추천

안녕하세요.data class를 정의해서 어떤 특정한 이벤트에 data class의 값을 realtime database에 넣는데 분명 isImage로 넣은 값이 realtime database에는 image로 저장이됩니다.

 

첫번째 사진은 dataclass입니다 마지막부분에 분명 변수명을 isImage로 지정해줬습니다.

 

 

두번째 사진은 어떤 특정한 이벤트(클릭)에 realtime database로 값을 보냅니다 값은 PostItemModel 위에서 보신 data class이며 마지막에 isImage는

이것입니다.

그래서 realtime database에서 확인을 해보면

다른값들은 dataclass의 변수명의 맞게 잘들어갔는데 isImage변수명은 저런식으로 image로 변수명이 변경되서 들어갔습니다. value값들은 원하는대로 잘들어갔고 변수명이 문제인데 분명 PostImemModel의 데이터클래스에서 isImage라고 변수명을 지정했는데 서버에서는 image로 들어갑니다 당채 이유를 알수가없습니다.. 그나마 추측가는건 realtime에서 자동으로 변경을 했다 이건데 왜 변경을했냐 이게 의문입니다.혹시 아시는거 있으시면 답변 부탁드립니다

2달째 코린이 (380 포인트) 님이 2021년 7월 25일 질문

1개의 답변

0 추천

찾아보니, 해당 이슈는 파이어베이스가 자동으로 Boolean 필드명을 바꾸기 때문이네요.

해결방법은 PropertyName 어노테이션을 사용하던가

https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/PropertyName

Kotlin data class일 경우는 @field:JvmField를 프로퍼티에 붙어서 자바로 컨버팅될 때 원하는 필드명이 유지되게 해주는 겁니다.

data class PostImageMode(
  ...
  @field:JvmField
  val isImage: Boolean = false 
)

 

한번 테스트해 보시고 결과를 알려주세요.

spark (224,800 포인트) 님이 2021년 7월 25일 답변
@field:JvmField
  val isImage: Boolean = false
이렇게 작성하니 realtime에 원하는 필드명으로 잘 저장이됩니다 감사합니다!
...