【问题标题】:Firestore only saves certain fields from a custom objectFirestore 仅保存自定义对象中的某些字段
【发布时间】:2021-03-16 13:01:09
【问题描述】:

我正在尝试将自定义对象保存到 Firestore,但由于某种原因它无法正常工作:

abstract class AbstractModel(open val id: String) {}
class ConcreteModel(override val id: String, private val username: String, private val password: String) : AbstractModel(id) {}

fun save() {
  val newModel = ConcreteModel("id", "username", "password")
  val db = Firebase.firestore
  db.collection("collection").document(newModel.id).set(newModel)
}

它只保存id 而没有别的。

【问题讨论】:

    标签: firebase kotlin google-cloud-firestore


    【解决方案1】:

    我希望 Firestore 不会保留 private 字段,因此我建议保持其可见性公开。


    仍然保持字段私有的一种方法是使用地图到persist the data,例如:

    hashMapOf(
        "id" to newModel.id,
        "username" to newModel.username,
        "password" to newModel.password
    )
    

    【讨论】:

    • 成功了!我要花很长时间才能弄清楚这一点。有什么方法可以让它们保持私密并且仍然可以正常工作?
    • 好吧,您可以手动将对象转换为地图,但不幸的是,我认为没有办法自动化该过程。
    • 您会将其保留为对象并直接保存或制作成地图吗?这些是首选解决方案吗?
    • 我亲自映射我所有的对象,这样我就可以更好地控制和保证什么是持久的,什么不是,但我认为没有首选的方式,无论什么最对你有感觉并产生最干净的代码!
    • 我明白了……但如果我想改变模型的结构,那只会让事情变得更难,因为我必须改变 hashMapOf。无论如何感谢您的帮助。
    猜你喜欢
    • 2016-01-21
    • 2021-10-26
    • 2020-09-22
    • 2013-11-15
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 2020-12-14
    • 2016-12-04
    相关资源
    最近更新 更多