使用firebase中的属性值过滤查看的数据

时间:2015-10-12 00:53:55

标签: angularjs firebase angularfire

我有这样的Firebase数据结构:

hotelboard
 Events
     -K09Iy9pa6FEA0rmmEMH
        emailId:"said@gmail.com"
        images
            0:"data:image/png;base64,iVBORw0KGgoAAAANSUhEU"
        post: "This is event 1"
        title:"Event 1"

 Facilities
     -K09Ibsqz5L82PUoCEjY
        emailId: "said@gmail.com"
        post: "this is fac 1"
        title: "Facility 1"
 Offers
     -K09IipPdR7We_D5Tzb9
        emailId: "said@gmail.com"
        post: "this is offer 1"
        title: "Offer 1"
 Restaurant
     -K0O-kIJASIhOa_gWKWY
        emailId: "said1@gmail.com"
        post: "sdgsdgsdgasdasdasdd"
        title: "sdgsgsdgsdg"

我正在从表格中按下拉列表添加活动,餐厅,优惠和设施。

在我以这种方式实现我的应用之前,我可以通过emailId过滤视图中的数据,这等于用户在登录时可以查看其帖子的登录用户名,这样:

var url = "https://hotelboard.firebaseio.com/";
var fb = new Firebase(url);

var fbObj = fb.startAt($scope.username).endAt($scope.username); 

$scope.articles = $firebaseArray(fbObj);

并在我的视图中迭代数组。

但是在我用结构完成这个实现后,代码就不再工作了。

我不知道如何以我想查看的方式查询我的数据。我发现很多信息表明我可以使用

fb.child("Event").startAt........

但是我不想写child("child_name")....我想要它动态地采用它在结构中是什么。

请提前帮助并表示感谢...

已解决更新

我按照 JAY 的建议添加了一个用户节点,该节点为每个用户提供了一个唯一的ID,在ID下我推送了我的数据。 所以我的数据结构现在看起来像这样:

hotelboard
  users
    0affbcbd-e29a-4b44-9036-e2086fb8d51e
      Events
        -K0YGDwJ4xgBjYql-39W   +

        -K0YGL7ziuRh-IioF8yC
           emailId:"said@gmail.com"
           post:"This is post 1"
           title:"Post 1"
     Facilities   +
     Restaurant   +
   19cc2166-6b1f-4ef9-8586-0735c6d92a4e
     Events       +
     Offers       +
     Restaurant   +

在我的控制器中,我过滤了每个用户只能发布自己帖子的数据

var fbObj = fb.child("users/").orderByKey().equalTo(fbAuth.uid);

感谢您提出建议 JAY

1 个答案:

答案 0 :(得分:0)

<强>解决

我按照 JAY 的建议添加了一个用户节点,该节点为每个用户提供了一个唯一的ID,在ID下我推送了我的数据。所以我的数据结构现在看起来像这样:

hotelboard
  users
    0affbcbd-e29a-4b44-9036-e2086fb8d51e
      Events
        -K0YGDwJ4xgBjYql-39W   +

        -K0YGL7ziuRh-IioF8yC
           emailId:"said@gmail.com"
           post:"This is post 1"
           title:"Post 1"
     Facilities   +
     Restaurant   +
   19cc2166-6b1f-4ef9-8586-0735c6d92a4e
     Events       +
     Offers       +
     Restaurant   +

在我的控制器中,我过滤了每个用户只能查看自己帖子的数据

var fbObj = fb.child("users/").orderByKey().equalTo(fbAuth.uid);

感谢您提出建议 JAY