将数据存储在Firebase上以供稍后查询

时间:2018-06-27 17:25:03

标签: firebase react-native react-native-firebase

我们有一个应用程序,它将数据存储在Firebase(数据库)上,稍后再查询。

存储数据的正确格式是什么。

示例数据将完成。他们将具有以下数据:
UserId
完成时间
GameData
等等...

随后,查询将按UserId查找所有已完成的游戏。我们希望确保以最佳方式收集数据,以便稍后查询,而不是稍后进行重构。

1 个答案:

答案 0 :(得分:0)

首先,请确保您有充分的理由在Firestore上使用Firebase。一旦确定要坚持使用Firebase Realtime Database,请查看以下文档摘录。因此,您实际上可能有2个单独的父节点,其中1个用于userId,另一个用于游戏。每个游戏节点的子代都是一个特定的游戏,它具有游戏用户的子代树(通过userId)。

  

Flatten data structures   如果将数据拆分为单独的路径,也称为   非规范化,可以在单独的调用中进行有效下载,   根据需要。考虑一下这种扁平化的结构:

{
  // Chats contains only meta info about each conversation
  // stored under the chats's unique ID
  "chats": {
    "one": {
      "title": "Historical Tech Pioneers",
      "lastMessage": "ghopper: Relay malfunction found. Cause: moth.",
      "timestamp": 1459361875666
    },
    "two": { ... },
    "three": { ... }
  },

  // Conversation members are easily accessible
  // and stored by chat conversation ID
  "members": {
    // we'll talk about indices like this below
    "one": {
      "ghopper": true,
      "alovelace": true,
      "eclarke": true
    },
    "two": { ... },
    "three": { ... }
  },

  // Messages are separate from data we may want to iterate quickly
  // but still easily paginated and queried, and organized by chat
  // conversation ID
  "messages": {
    "one": {
      "m1": {
        "name": "eclarke",
        "message": "The relay seems to be malfunctioning.",
        "timestamp": 1459361875337
      },
      "m2": { ... },
      "m3": { ... }
    },
    "two": { ... },
    "three": { ... }
  }
}