Firebase实时数据库@PropertyName存数据正常但无法读取问题
解决Firebase实时数据库读取数据时@PropertyName注解失效的问题
你的问题出在Kotlin数据类中@PropertyName注解的作用目标不对。默认情况下,Kotlin的注解会直接标注在字段上,但Firebase实时数据库在读取数据时,是通过类的getter方法来映射字段的,所以需要明确指定注解作用在getter上。
修改后的代码如下:
import com.google.firebase.database.PropertyName data class MyClass( @get:PropertyName(value = "n") val name: String = "", )
原理很简单:Firebase在序列化和反序列化时,对于Kotlin的属性,会优先识别getter方法上的@PropertyName注解。原来的写法只给字段加了注解,读取时Firebase找不到对应的映射关系,就会触发默认构造函数返回空字符串;改成作用在getter上后,就能正确将数据库中的"n"键映射到name属性了。
内容的提问来源于stack exchange,提问作者Lheonair
相关产品推荐
相关产品推荐

