首页 > 解决方案 > Firestore 文档参考序列化

问题描述

我有一个 pojo,它映射了一个 firestore 文档。该文档包含对其他集合的其他文档的引用。

class Game(var local: String? = null, var visitor: String? = null,
        var events: MutableList<DocumentReference> = mutableListOf(), var date: Date? = null): Serializable 

问题是 DocumentReference 不可序列化。我读过我可以将路径保存为字符串,然后自己创建对象(FirebaseFirestore.getInstance().document(path)),但是在 Firestore 中不再是 Reference 类型的字段。

所以我的问题是,这是好方法吗?另外,该字段是字符串而不是引用是否重要?

问候,迭戈

标签: androidfirebasekotlingoogle-cloud-firestore

解决方案


所以我的问题是,这是好方法吗?

是的。a 中最重要的部分DocumenetReference是字符串路径。如果你序列化它,你可以重新构造一个 DocumentReference 对象,非常容易。

作为结论,如果您需要序列化一个DocumentReference对象,请使用 DocumentReference 的getPath()方法来获取一个文本字符串,该字符串表示文档在数据库中的位置。要将路径字符串反序列化回DocumentReference对象,只需使用FirebaseFirestore.getInstance().document(path)

编辑:

这意味着数据库中的字段现在是字符串而不是引用。

这是正确的。

有关系吗?我认为作为参考必须具有某种优势。

是的,因为现在该属性是 String 类型,所以您不能再利用DocumentReference类提供的功能。但这是可以帮助您实现所需的解决方法。String 类是可序列化的,而 DocumentReference 不是。


推荐阅读