如何在Firebase

时间:2017-11-22 21:32:44

标签: firebase firebase-realtime-database

我正在开发一个用户在类别中发布产品的应用程序。我正在使用firebase,我正在尝试压缩数据库上的数据,但我不确定帖子与类别的连接。

以下是数据库设计:

"categories": {
  "category1": {
     "id": "1",
     "name":  "computers"  
   },
  "category2": {
     "id": "2",
     "name":  "Furniture"  
    },
  "category3: {
    "id": "3",
    "names":  "Books" 
   },
}
"users":{
  "email": "test@gmail.com"       
  "posts": {
    "post1": {
       "id": "1"
       "title": "Selling my guitar”,
       "categories": {
         "category1": "true"
        }
      }
  }

编辑:也许像这样

"categories": {
  "category1": {
     "id": "1",
     "name":  "computers",
     "posts": {
        "post1": true
     }
   },
  "category2": {
     "id": "2",
     "name":  "Furniture"
   },
  "category3": {
    "id": "3",
    "names":  "Books"
   },
}
"users": {
  "userid1": {
    "email": "test@gmail.com" ,
    "posts": {
      "post1": "true"
    }
  }
 },

 "posts": {
    "post1": {
       "id": "1",
       "title": "Selling my guitar",
       "users": {
         "user1" : "true"
       },
       "categories": {
         "category1": "true"
        }
      }
  } 

因此,据我所知,我知道帖子应该是一个单独的实体,但后来我不知道如何连接它们。

请告诉我如何改进此数据库。

1 个答案:

答案 0 :(得分:2)

展平数据意味着您不要混合实体类型。如果查看当前的/users节点,现在可以获得有关该用户的信息(他们的电子邮件地址)和节点列表。这是两种不同的实体类型,通常应位于单独的顶级列表中。

"categories": {
  "category1": {
     "id": "1",
     "name":  "computers"  
   },
  "category2": {
     "id": "2",
     "name":  "Furniture"  
    },
  "category3: {
    "id": "3",
    "names":  "Books" 
   },
}
"users":{
  "userid1": {
    "email": "test@gmail.com"       
  }
 },
 "posts": {
    "post1": {
       "id": "1"
       "title": "Selling my guitar”,
       "categories": {
         "category1": "true"
        }
      }
  }