使用最新的Angular和Firebase,我正在尝试从登录用户访问一些深层嵌套项目。
结构看起来像这样: firebase - >用户 - > user-uid - > email / name / pass / 列表 /(其中列表有) - > list-uid - > item-uid - >项目名称。
我想访问该姓氏 - 孩子(最好通过ng-repeat,因为它们是列表项,我希望它们显示在每个用户仪表板上)。
我一直在尝试不同的方法,但最接近的方法是:
$scope.user = $firebaseObject(ref.child('users').child(authData.uid));
然后在我的html中(现在):
<span>{{user.lists}}</span>
其中打印出如下内容:{“-uid”:{“age”:“21”,“name”:“martin”},{“ - uid”:{“age”:“25”,“name” “:”john“}}}等等等。
参考文献:
var ref = new Firebase('https://url.firebaseio.com');
有什么想法吗?谢谢!
编辑: 我试着像这样添加一个ng-repeat:
<li ng-repeat="list in user.lists">{{list.name}}</li>
这有点奏效,它向我展示了我放入的物体,这些物体是静止的,但不是“更深层次”的物体......
编辑2: 更新了.json的结构。 我可以从名字中得到“我”而不是更深层次的“mjölk”:
"users" : {
"8a6da12a-0992-43f5-bb33-95ddd49fed8c" : {
"email" : "torsten@gmail.com",
"lists" : {
"-KDjNYC8GS2QFHYyp74L" : {
"age" : "other",
"name" : "me"
},
"8a6da12a-0992-43f5-bb33-95ddd49fed8c" : {
"-KDjN_NkTQmj_1R00xZL" : {
"done" : false,
"id" : 1458936351305,
"name" : "mjölk"
},
"-KDjN_r0WmT6xiZwadO5" : {
"done" : false,
"id" : 1458936351305,
"name" : "ägg"
},
"-KDjNagkBWmJRj6oQqc2" : {
"done" : false,
"id" : 1458936351305,
"name" : "rejv"
},
"-KDjNb5Fpak_9A_rvn8W" : {
"done" : false,
"id" : 1458936351305,
"name" : "kossor"
},
"-KDjOVtAFJoYVNUkapNC" : {
"done" : false,
"id" : 1458936351305,
"name" : "piss"
},
"-KDjOlemXR2eOoqPBh0v" : {
"done" : false,
"id" : 1458936677873,
"name" : "mjölk igen"
}
}
},
答案 0 :(得分:2)
正如我在评论中已经说过的那样:部分问题是由于您正在嵌套列表。 Firebase documentation recommends to nest data sparingly这就是其中之一的原因有很多。
要取消数据,您可以将用户配置文件与每个用户的列表分开存储:
"users" : {
"8a6da12a-0992-43f5-bb33-95ddd49fed8c" : {
"email" : "torsten@gmail.com",
}
},
"user_lists" : {
"-KDjNYC8GS2QFHYyp74L" : {
"age" : "other",
"name" : "me"
},
"8a6da12a-0992-43f5-bb33-95ddd49fed8c" : {
"-KDjN_NkTQmj_1R00xZL" : {
"done" : false,
"id" : 1458936351305,
"name" : "mjölk"
},
"-KDjN_r0WmT6xiZwadO5" : {
"done" : false,
"id" : 1458936351305,
"name" : "ägg"
},
"-KDjNagkBWmJRj6oQqc2" : {
"done" : false,
"id" : 1458936351305,
"name" : "rejv"
},
"-KDjNb5Fpak_9A_rvn8W" : {
"done" : false,
"id" : 1458936351305,
"name" : "kossor"
}
}
}
现在,如果您想显示个人资料列表和当前用户的列表,您可以:
var ref = new Firebase('https://yours.firebaseio.com');
$scope.users = $firebaseArray(ref.child('users'));
$scope.lists = $firebaseArray(ref.child('user_lists').child(auth.uid));
然后在你的HTML中:
<p>Users:</p>
<ul>
<li ng-repeat="user in users">{{user.email}}</li>
</ul>
<p>Lists for you:</p>
<ul>
<li ng-repeat="list in lists">{{list.name}}</li>
</ul>