【问题标题】:how to access related data in firebase如何访问firebase中的相​​关数据
【发布时间】:2017-08-31 22:26:01
【问题描述】:

我是 Firebase 的新手。我已经阅读了很多关于构建数据以加快加载速度的文章。我已经明白其中的逻辑了。但是我想对此做进一步的解释。

假设我正在创建一个应用程序,其中有两个实体:用户和产品。

用户可以发布很多产品。这是一对多的关系。我已经读过,为了获得更好的性能,我必须复制我的数据(非规范化),所以我的数据库看起来像这样:

  users:
{
"user1":
 {
  name: "denis",
  phone: "09898989083"
  .........more data here
 }

 products:{
   "product1": true,
   "product2":true
  }
}

"products"
{

 "product1":

{

  name: "iphone6",
  price: "500 USD"
}

 "product1":

{

name: "samsung",
price: "400 USD"
 }

}

我的问题在我的用户表中,关于与产品的关系,被告知输入产品 ID,然后我将值设置为 true。这真的是做什么的。例如,如何在 Android 中获取该产品的名称和价格?

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    正如您所说,denormalization 是 Firebase 中的常见做法。我会给你一个例子来更好地理解它的含义。许多具有 SQL 背景的开发人员会这样构建数据库:

    Firebase-root
       --- Users
         --- User1
           --- name: "denis"
           --- phone: "09898989083"
           --- Products
             --- Product1
               --- name: "iphone6"
               --- price: "500 USD"
             --- Product2
               --- name: "iphone5"
               --- price: "300 USD"
    

    如您所见,Products 节点嵌套在每个用户节点下。这意味着每次想要获取特定用户的一些详细信息时,都需要下载该用户的整个节点,包括产品详细信息,这显然没有必要。因此,对于 Firebase,我们使用 denormalization。这意味着在用户节点内,我们只使用product1": true 来了解特定产品属于该用户。知道产品的 id,我们可以得到该产品的所有必要细节。要记住的另一件事是,我们需要使数据库尽可能扁平化。为此,我建议您阅读以下帖子,Structuring your Firebase Data correctly for a Complex App

    希望你能更好地理解这个概念。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多