2

我来自 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,也许我需要创建另一个连接users和的对象posts??

有任何想法吗?

{
  "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"
          }
        }
      }
    }
  }
}
4

1 回答 1

2

如何构建数据不是一个简单的问题,它高度依赖于数据的读取方式。一般规则是努力进行写入以使读取变得容易。Firebase 提供了两个关于理解数据结构化数据的指南。

它们不太适合此文本框,因此您会在那里找到更好的答案。这是鸟瞰图。

  1. 它是 JSON 数据。
  2. 展平您的数据。不要仅仅因为可以筑巢。像在 SQL 中一样对待每个逻辑数据组件,并将其保留在自己的路径中。
  3. 避免在分布式系统中使用数组。顺序数字 id 容易出错。
  4. 利用索引创建主数据的子列表,而不是尝试将列表嵌套在列表中的列表中。
于 2014-09-12T02:26:20.657 回答