Angularjs 使用firebase中的属性值筛选查看的数据
我有如下Firebase数据结构:Angularjs 使用firebase中的属性值筛选查看的数据,angularjs,firebase,angularfire,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 -K09I
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过滤视图中的数据,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 +
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已经解决了 我遵循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 +
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的建议,现在还不清楚你到底想要什么:当你说“用户登录时只能查看他的帖子”时,这是否意味着当用户登录时,他们应该能够看到包含他的电子邮件的事件、设施等?如果是这种情况,那么结构将不允许查询,因为它们有一层太深(请参阅最新更新中的深层路径查询)。还有一个建议,将emailId与帖子分离:如果用户更改了电子邮件怎么办?这可以通过使用一个/users/node来解决,每个用户都有一个userId(一个随机生成的id),您可以使用该id将每个条目与该用户关联。@Jay我希望该用户只查看自己的帖子。在我使用
startAt()之前,endAt()使用.priority,它是我在post创建方法中添加的。如果你看这里,你可以看到我的代码。我在上一次更新中阅读了深层路径查询,但在那里他们编写了selfref.orderByChild(“维度/高度”)。在….
上,我希望动态获取路径。问题仍然有些模糊,因为所有四个节点都有“post”子节点。你想在活动、设施、优惠、餐厅中检索“帖子”吗?用户和帖子之间的关系定义在哪里?就这一点而言,这些职位在哪里?这些东西都不在样本数据中。到目前为止,您尝试了什么代码?