如何在Firebase中构建数据?

时间:2014-09-12 00:22:41

标签: javascript firebase firebase-realtime-database nosql

我来自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
    }
  }

但这似乎是多余的并且重复数据..

我需要找到一种方法来搜索postsuser: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"
          }
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:2)

如何构建数据不是一个简单的问题,而是高度依赖于数据的读取方式。一般规则是努力写入以使读取变得容易。 Firebase在understanding datastructuring data上提供了两个指南。

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

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