关于Firebase非规范化博客文章的澄清

Mic*_*ael 1 denormalization firebase

我刚刚阅读了Firebase博客文章标题为Denormalizing Your Data Is Normal,我要求澄清.

在考虑因素段落之前,我一直在使用它.具体来说,以下内容:

"评论的修改很简单:只需将/ comments下的评论值设置为新内容.要删除,只需删除/ comments中的评论 - 以及每当您在代码中的其他地方遇到不存在的评论ID时在/ comments中,您可以假设它已被删除并正常进行"

对于修改,为什么我不必修改/ links和/ users下存储的重复注释?

对于删除,我是否正确理解,一旦删除注释,我必须在所有读取逻辑中使用逻辑来交叉检查/注释以防它被删除?

谢谢!

Abe*_*ins 5

博客文章中详述的结构不存储重复的注释.我们存储一次评论/comments然后将name这些评论存储在/links和下/users.这些函数用作指向实际注释数据的指针.

考虑帖子中的示例结构......

{
  users: {
    user1: {
      name: "Alice",
      comments: {
        comment1: true
      }
    },
  },
  comments: {
    comment1: {
      body: "This is awesome!",
      author: "user1"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,实际注释数据仅存储一次.

如果我们修改/comments/comment1,我们不需要更新任何其他内容,因为我们只存储name注释,/links/users不是实际的注释内容.

如果我们要删除/comments/comment1,那将删除评论数据的唯一存在.但是,我们还是要这些"悬空"的参考comment1/users/user1/comments.

想象一下,我们删除/comments/comment1,当我们尝试加载Alice的评论时,我们可以看到并看到comment1它不再存在.然后我们的应用程序可以通过以下方式做出相应的反应:a)删除引用或b)忽略引用而不尝试显示已删除的注释.