我正在尝试为我的文档制作一个事件日志系统或历史记录,因此每次在文档中修改一个字段时,我都想记录或保存它,这样我就可以看到每个文档的更改历史记录。
我怎样才能做到这一点?我不想在每次更改时都保存完整的文档,然后有大量重复的文档,如果可能的话,我只想获取更改后的字段(例如名称:'john' -> 名称:'jack')。
最佳答案
i don't want to save the full doc on each change and then have tons of duplicated docs
一旦文档发生变化,它就会成为一个新文档。因此,除非您对之前所做的更改进行更改,否则不会有重复的文档。另请注意,在 Cloud Firestore 中,没有字段级权限或对文档的访问权限。这是整个文档,或者什么都没有。因此,如果您想更改文档中的字段,例如:
userName = "John"
进入
userName = "Jack"
您将获得整个文档,而不仅仅是已更改的 userName
属性。
Cloud Firestore 监听器在文档级别触发。无法仅通过文档中的特定字段触发。
如果您只想收到特定字段的通知,请考虑添加一个额外的集合,其中包含仅包含这些字段的文档。这种数据重复在 Firestore 等 NoSQL 解决方案中很常见,为此,我建议您观看此视频,Denormalization is normal with the Firebase Database为了更好地理解。它适用于 Firebase 实时数据库,但同样的原则也适用于 Cloud Firestore。
对于数据库架构,您还可以从这个 post 中查看我的回答。 .
关于Firebase Firestore 文档更改历史记录(如事件日志/每个文档更改的历史记录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54724971/