我正在寻找一种构造Firestore数据库的适当方法,以处理单个集合中文档的多个版本历史记录。
例如:我有一个集合命名提供其有多个文件对应于多重优惠。对于这些文档中的每一个,我都希望有更改历史记录,例如Google文档中的更改。
由于文档仅支持直接添加字段或嵌套另一个集合,因此我想到了以下结构:
collections: offers
- documents: offer1, (offer2, offer3, ...)
- fields populated with latest version of the offer content
- nested collection named history
- nested documents for each version (v1, v2, v3), which in turn have fields specifing state of each field in that version.
Run Code Online (Sandbox Code Playgroud)
由于我拥有最新状态,而不是嵌套收集历史记录,因此这似乎有点复杂。在平面结构中,数组中的最新项是最新状态,还是类似的状态,这可能是某种原因吗?
另外,单击按钮即可生成历史记录状态,因此我不需要将所有可能的更改保存在历史记录中,而只需在用户保存时添加快照即可。
我想将Firebase用作我的数据库,因为我还需要其他一些东西,因此我暂时不考虑其他解决方案。
谢谢!
编辑:根据亚历克斯的回答,这是我对此的另一种看法。
Firestore-root
|
--- offers (collection)
|
--- offerID (document)
| (with fields populated )
| |
| --- history (collection) //last …Run Code Online (Sandbox Code Playgroud)