【发布时间】:2016-07-13 16:14:03
【问题描述】:
在 Firebase 中使用最新的 Angular,我正在尝试从登录用户那里访问一些较深的嵌套项目。
结构看起来像这样: firebase -> users -> user-uid -> email/name/pass/lists/(lists 有)-> 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"
}
}
},
【问题讨论】:
-
不要描述您的数据结构,而是在您的问题中包含实际 JSON 树的 sn-p(作为文本,而不是屏幕截图)。您可以通过单击 Firebase 数据库中的“导出”按钮轻松获取此信息。
-
虽然从扫描描述来看,看起来你是在嵌套列表。 Firebase documentation recommends to nest data sparingly 的原因有很多,这就是其中之一。
-
我已经通读了几遍,但我不确定我应该如何以不同的方式构建结构。我希望登录的用户能够制作自己的列表,只显示他们自己创建的列表(通过他们的 uid)。也许所有“其他” uid 都是多余的,但我似乎无法摆脱它们。我希望只有用户和列表有一个 uid,而不是每个项目。我马上用 .json 更新主帖!
-
@FrankvanPuffelen 用 .json 更新了主帖
标签: angularjs firebase angularfire firebase-realtime-database