在我的Firebase appp中,我有几个这样的类:
class User (name: String, address: String){
fun doesSomething(){}
}
我想这样添加到Firestore:
val user = User("Test User", "Fakestreet 123")
db.collection("users").document("test user").set(user)
问题是,根据the documentation,我只能使用数据类。但就我而言,我的类也包含函数。当然,我只想将属性添加到我的Firestore数据库中(因此,在我的示例中,名称和地址)。
实现此目标的首选方法是什么?我是Kotlin和Android Studio的新手,很抱歉,如果我错过了明显的内容。
该文档并不建议您只能使用数据类。那只是科特林最常见的方式。
Firestore不会尝试序列化类上的任意方法。为了考虑一个属性,它必须具有与JavaBeans兼容的名称或声明。这意味着它将寻找看起来像getter和setter的方法。例如,名为getName()
和setName()
的访问器将发信号通知Firestore接受getName()
提供的值,并将其分配给名为“名称”的字段。您的函数“ doesSomething”将不会序列化。使用Kotlin,属性会自动转换为具有JavaBeans兼容名称的getter和setter。
但是,无论如何,我还是鼓励您使用数据类,并将原始数据与处理该数据的方法分开。这只是更好的软件工程。