如何在Firebase中构造数据

how to structure data in Firebase?

本文关键字:数据 Firebase      更新时间:2023-09-26

我来自MySQL工作流,现在我正试图在Firebase中做一些事情,我在构建数据时遇到了一些难题,因为我不知道如何查询它。

在下面的例子中,我有一些users和一些comments,找到的好方法是什么

how many post likes a user had
how many post comments a user had
what were the posts that a user liked
...

我正在考虑将这些信息添加到用户中,比如:

  "user:2": {
    "name": "Doe",
    "email": "doe@bob.com",
    "post_likes": {
      "post:1": 1,
      "post:2": 1
    },
    "post_comments": {
      "post:1": 15,
      "post:2": 5
    }
  }

但这似乎是多余的,而且重复了数据。。

我需要找到一种方法在posts中搜索与user:1有关的所有内容,也许我需要创建另一个连接usersposts的对象??

有什么想法吗?

{
  "array": {
    "users": {
      "user:1": {
        "name": "John",
        "email": "john@bob.com"
      },
      "user:2": {
        "name": "Doe",
        "email": "doe@bob.com"
      }
    },
    "posts": {
      "post:1": {
        "name": "First Post",
        "content": "some post content",
        "comments": {}
      },
      "post:2": {
        "name": "Second Post",
        "content": "some other post content",
        "likes": 2,
        "comments": {
          "comment:1": {
            "uid": "user:1",
            "email": "some comment"
          },
          "comment:2": {
            "uid": "user:2",
            "email": "some other comment"
          }
        }
      }
    }
  }
}

如何构建数据不是一个简单的问题,它在很大程度上取决于如何读取数据。一般的规则是努力写作,使阅读变得容易。Firebase提供了两个关于理解数据和构建数据的指南。

它们不太适合这个文本框,所以你会在那里找到更好的答案。这是鸟瞰图。

  1. 它是JSON数据
  2. 扁平化您的数据。不要因为可以就去筑巢。像对待SQL一样对待每个逻辑数据组件,并将其保留在自己的路径中
  3. 避免在分布式系统中使用阵列。顺序数字ID容易出错
  4. 利用索引创建主数据的子列表,而不是试图在列表中的列表中嵌套列表