결과부터 말하면, Firestore는 companion object 의 필드가 아니라, 일반 필드만 저장할 수 있다. 또한 선택적으로 Firestore에 저장할 필드를 선택할 수도 있다.
@Transient 어노테이션이 붙은 필드를 무시한다. 그리고 Kotlin의 companion object의 필드는 일반적으로 Firestore에 저장되지 않는다. 이는 Firebase Firestore 가 클래스의 "일반" 필드만 저장하며, 그 외에는 무시하기 때문이다. 따라서 companion object 내부의 필드가 Firestore에 저장되도록 하려면 해당 필드를 클래스의 일반적인 멤버 변수로 옮겨야 한다.
Firebase Firestore는 기본적으로 클래스의 멤버 변수 중에서 transient 키워드나
@Transient 어노테이션이 붙은 필드를 무시한다. 만약 특정 필드가 Firestore에 저장되지 않도록 하려면 해당 필드를 transient 키워드나 @Transient 어노테이션으로 표시하면 된다.
아래는 Kotlin의 데이터 클래스에서 transient 키워드를 사용하는 예시이다.
MyClass.kt
data class MyClass(
val normalField: String,
@Transient val ignoredField: String
)
이 경우에는 ignoredField는 Firestore에 저장되지 않는다.