我读过这article,如果您发现我的任何解释晦涩难懂,请参考它.基本上,其 idea 是,每当您添加或编辑文档时,您都会 for each 文档分配一个last_modified
字段,这些文档将根据其访问或修改的日期更新.每当查询Firerestore数据库时,用户设备上的日期都会保存为lastQueried
.您在Firerestore数据库中查询last_modified
和lastQueried
的文档,并且应该只返回已添加或修改的文档.查询的结果存储在用户的本地数据库中.
现在来谈谈手头的问题.假设您从Firerestore数据库中删除了文档.用户的本地数据库将无法检测到该删除,除非它读取整个Firestore集合.
我想出的解决方案是向文档添加一个deleted
或更专业的archived
布尔字段,这将使我能够从本地数据库中删除任何具有archived: true
的文档.这不是一个最佳解决方案;然而,因为虽然它保持了"降低阅读成本"的主题,但文档仍然会保留在数据库中,这对于需要大量删除的数据库来说并不好.
我不是数据库方面的专家,但我认为这个数据库设计是一个标准.那么,你会如何解决这个问题呢?我的初始设计是否有缺陷或不适合我的用例?
如有任何帮助,我们将不胜感激.