Firebase Firestore 文档更改历史记录(如事件日志/每个文档更改的历史记录)

标签 firebase google-cloud-firestore google-cloud-functions

我正在尝试为我的文档制作一个事件日志系统或历史记录,因此每次在文档中修改一个字段时,我都想记录或保存它,这样我就可以看到每个文档的更改历史记录。

我怎样才能做到这一点?我不想在每次更改时都保存完整的文档,然后有大量重复的文档,如果可能的话,我只想获取更改后的字段(例如名称:'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/

相关文章:

swift 3 : Determining if an email domain is valid with Firebase

java - 递增数字作为 Firestore 文档名称?

android - 如何构建 Firebase 中自动完成搜索的数据

android - 导航组件似乎只使用短动态链接(firebase)

android - 如何以编程方式使用 Firebase 向用户发送用户通知?

objective-c - 如何一起使用 RNCryptor 和 Firebase - Swift 和 Objective C

node.js - Cloud Functions for Firebase 的增量计数器

flutter - 调用者没有执行指定操作的权限

javascript - 使用 JavaScript 在 Firebase 中获取 child 的 ChildrenCount

android - 通知未出现在应用程序的后台状态和终止状态