首页 > 解决方案 > 如何使用标准类将自定义对象添加到 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 的新手,如果我遗漏了一些明显的东西,我很抱歉。

标签: androidfirebasekotlingoogle-cloud-firestore

解决方案


该文档并不建议您只能使用数据类。这只是 Kotlin 中最常见的方式。

Firestore 不会尝试序列化类上的任意方法。为了考虑属性,它必须具有与 JavaBeans 兼容的名称或声明。这意味着它将寻找看起来像 getter 和 setter 的方法。例如,名为getName()和的访问器setName()将向 Firestore 发出信号以获取由提供的值getName()并将其分配给名为“name”的字段。您的函数“doesSomething”不会被序列化。使用 Kotlin,属性会自动转换为具有 JavaBeans 兼容名称的 getter 和 setter。

但是,我鼓励您无论如何都使用数据类,并将原始数据与处理该数据的方法分开。这只是更好的软件工程。


推荐阅读