android - 如何使用标准类将自定义对象添加到 Firestore?
问题描述
在我的 Firebase 应用程序中,我有一些这样的类:
class User (name: String, address: String){
fun doesSomething(){}
}
我想像这样添加到 Firestore:
val user = User("Test User", "Fakestreet 123")
db.collection("users").document("test user").set(user)
问题是,根据文档,我只能使用数据类。但就我而言,我的类也包含函数。当然,我只想将属性添加到我的 firestore 数据库中(所以在我的示例中,名称和地址)。
实现这一目标的首选方法是什么?我是 Kotlin 和 Android Studio 的新手,如果我遗漏了一些明显的东西,我很抱歉。
解决方案
该文档并不建议您只能使用数据类。这只是 Kotlin 中最常见的方式。
Firestore 不会尝试序列化类上的任意方法。为了考虑属性,它必须具有与 JavaBeans 兼容的名称或声明。这意味着它将寻找看起来像 getter 和 setter 的方法。例如,名为getName()
和的访问器setName()
将向 Firestore 发出信号以获取由提供的值getName()
并将其分配给名为“name”的字段。您的函数“doesSomething”不会被序列化。使用 Kotlin,属性会自动转换为具有 JavaBeans 兼容名称的 getter 和 setter。
但是,我鼓励您无论如何都使用数据类,并将原始数据与处理该数据的方法分开。这只是更好的软件工程。
推荐阅读
- c++ - 为什么 C++ std::min_element 库函数接受函子,该函子采用 bool 返回类型的函数对象而不是 C 中的 int?
- reporting-services - 使用输入文本代替下拉列表作为参数(多维数据集作为数据源)
- java - 如何遍历地图以获取 2 个键的所有值
- html - 使 Angular Material 数据表行滚动,同时保持一个粘性标题
- html - favicon 不会显示,除非它的名称是“favicon.ico” - 本地 Apache2 服务器
- shell - 如何使用 shell 脚本对 IP 范围进行 DNS 查找
- java - 如何让我的布尔值返回真值?因为它一直返回 false
- javascript - 如何通过电子应用程序执行命令
- javascript - 如何在没有来自客户端的ajax调用的情况下将身份验证令牌传递给localStorage中的客户端
- postgresql - 在 postgres 中合并行