I have this data class in Kotlin (example):
import com.google.firebase.database.Exclude
data class User(val name: String = "", @Exclude val age: Int = 0)
And I don't want to save the age property in firebase. @Exclude should do this but it does not work, age is still saved.
Are there any workarounds?
Placing @Exclude
on a property targets its generated field and not its generated get accesor method. To do the latter you'll need to prefix "Exclude" with "get:". e.g.:
data class User(val name: String = "", @get:Exclude val age: Int = 0)
See Annotation Use-site Targets for more details.
Actually you don't need to add only @get:Exclude
but you need all 3 Exclude,
@Exclude @set:Exclude @get:Exclude.
I did it for imageUrl
and providerId
data class FirebaseChatModel(
@get:PropertyName("message")
@set:PropertyName("message")
var message: String = "",
@get:PropertyName("type")
@set:PropertyName("type")
var type: Int = 1,
@get:PropertyName("senderId")
@set:PropertyName("senderId")
var senderId: Int = 0,
@get:PropertyName("receiverId")
@set:PropertyName("receiverId")
var receiverId: Int = 0,
@Exclude @set:Exclude @get:Exclude var imageUrl: String? = "",
@Exclude @set:Exclude @get:Exclude var providerId: Int = 0
)