使用kotlin数据类的Firebase @Exclude

Dan*_*n S 18 kotlin firebase firebase-realtime-database

我在Kotlin中有这个数据类(例子):

import com.google.firebase.database.Exclude

data class User(val name: String = "", @Exclude val age: Int = 0)
Run Code Online (Sandbox Code Playgroud)

而且我不想在firebase中保存年龄属性.@Exclude应该这样做,但它不起作用,年龄仍然保存.

有没有解决方法?

mfu*_*n26 41

放置@Exclude在属性上的目标是其生成的字段,而不是其生成的get accesor方法.要执行后者,您需要在"get:"前加上"Exclude".例如:

data class User(val name: String = "", @get:Exclude val age: Int = 0)
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅注释使用位置目标.


Kis*_*nki 5

实际上,您不需要仅添加,@get:Exclude但是您需要全部3个Exclude

@Exclude @set:Exclude @get:Exclude。

我这么做是为了imageUrlproviderId

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
)
Run Code Online (Sandbox Code Playgroud)