【问题标题】:Build the data structure with relationship via Firebase通过 Firebase 构建具有关系的数据结构
【发布时间】:2016-12-09 09:10:21
【问题描述】:

我是 noSQL 和 Firebase 的新手。但我想通过 Firebase 构建我的数据库结构。

我有很多用户和一个用户列表。有关系的结构。 所以我做了in the example:

 String key = mDatabase.child("lots").push().getKey();
    //create new lot
    Lot lot = new Lot(fbUser.getUid(), fbUser.getEmail(),  mMessage.getText().toString());
    //turn to map
    Map<String, Object> lotValues = lot.toMap();
    Map<String, Object> childUpdates = new HashMap<>();
    childUpdates.put("/lots/" + key, lotValues);
    childUpdates.put("/user-lots/" + fbUser.getUid() + "/" + key, lotValues);
    mDatabase.updateChildren(childUpdates);

但结果我要复制这些数据:

也许最好得到这个structure。我试图找到一个如何构建一个示例,因为我不想重新发明轮子,但到目前为止我的努力是徒劳的。

有什么建议吗?非常感谢。

【问题讨论】:

  • 如果我理解正确,你想要一个指向数据库中另一个节点的指针吗?如果这是不可能的,请不要感到惊讶,Firebase 缺少大量重要功能,例如集合过滤、一对一上游消息等等。
  • @AbAppletic 例如,如果我想在一个请求中获取诸如“最佳用户批次”之类的数据,我必须创建一个单独的分支来填充数据,如下所示:/best_user_lots /user_id/lots_id ?
  • 是的。你做。非常不幸的是,Firebase 没有提供一种没有多余数据的方法,但它必须按照您当前的方式完成。
  • @AbAppletic 哦,非常感谢!我正在尝试第二天了解firebas中的结构,现在我已经完成了,可能是))
  • 祝你好运:)

标签: android firebase firebase-realtime-database nosql


【解决方案1】:

您正在寻找的是 Pointers,不管您信不信,Firebase 没有拥有它。

例如,如果您想拥有 3 个数据列表:

  1. 我的帖子
  2. 最近的帖子

那么你必须这样做:

databaseRoot:{
  Posts:{
     {UNQ_KEY}:
      {
        title: "x",
        description: "y",
        authorUserID: {USERID1}
      }
   }

  Users:{
    {USERID1}
      Posts:{
        {UNQ_KEY_2}: {
         title: "x",
         description: "y"
        }
      }
   }
}

在创建UNQ_KEY 时,您还会在用户的用户ID 下创建UNQ_KEY_2

要显示“我的帖子”,您将获得{USERID1} 下的列表。要获得“Recent Posts”,您必须转到Posts 节点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-01
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    相关资源
    最近更新 更多