android - 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 类型的字段。
所以我的问题是,这是好方法吗?另外,该字段是字符串而不是引用是否重要?
问候,迭戈
解决方案
所以我的问题是,这是好方法吗?
是的。a 中最重要的部分DocumenetReference
是字符串路径。如果你序列化它,你可以重新构造一个 DocumentReference 对象,非常容易。
作为结论,如果您需要序列化一个DocumentReference
对象,请使用 DocumentReference 的getPath()方法来获取一个文本字符串,该字符串表示文档在数据库中的位置。要将路径字符串反序列化回DocumentReference
对象,只需使用FirebaseFirestore.getInstance().document(path)。
编辑:
这意味着数据库中的字段现在是字符串而不是引用。
这是正确的。
有关系吗?我认为作为参考必须具有某种优势。
是的,因为现在该属性是 String 类型,所以您不能再利用DocumentReference类提供的功能。但这是可以帮助您实现所需的解决方法。String 类是可序列化的,而 DocumentReference 不是。
推荐阅读
- java - How to use Primefaces galleria with user defined objects in jsf
- vba - 简单问题 - 范围对象 - 查找感兴趣单词的粗体版本
- java - Kotlin 中方法的返回类型应该是什么,该方法的值可以为 null 并且将从 Java 中调用?
- amazon-web-services - How to fix `user must specify LSN` when using AWS DMS for Postgres RDS
- javascript - Stack Navigator in React Native. Error "undefined is not an object (evaluating this.props.navigation)"
- typescript - 如何在 Typescript 中反转映射枚举值
- c# - 组合框列表在用户输入期间从数据库中添加项目
- iis - 将经典 asp 网站从 IIS 6.0 迁移到 IIS 10
- ansible - 如何在同一台服务器上像 cp 命令一样运行 linux ..但是副本说它找不到远程服务器
- bash - Tmux 打开 4 个窗格并将每个窗格设置为特定目录