Javascript 在视图中显示Firebase多对多关系的最佳实践(AngularFire)
我发现了很多关于如何在Firebase中构建多对多关系的示例。按照我见过的最推荐的设置方式,我在Firebase中有一些基本的帖子和标签数据:Javascript 在视图中显示Firebase多对多关系的最佳实践(AngularFire),javascript,angularjs,angularjs-ng-repeat,angularfire,nosql,Javascript,Angularjs,Angularjs Ng Repeat,Angularfire,Nosql,我发现了很多关于如何在Firebase中构建多对多关系的示例。按照我见过的最推荐的设置方式,我在Firebase中有一些基本的帖子和标签数据: /posts: -K_GOdSQvCQ2sAcHfo1x - descpripton: "This is a post..." - title: "This is a title..." - tags: -K_aBTTDKVUovZe3l0lX: true ..... -K_GFDQjPoSmC
/posts:
-K_GOdSQvCQ2sAcHfo1x
- descpripton: "This is a post..."
- title: "This is a title..."
- tags:
-K_aBTTDKVUovZe3l0lX: true
.....
-K_GFDQjPoSmCJM3YAlB:
- description: "Another post..."
- title: "This title..."
- tags:
-K_aBTTKDhYsnbFv1Tuc: true
......
/tags:
-K_aBTTDKVUovZe3l0lX
- name: "Sport"
- postIds:
-K_GOdSQvCQ2sAcHfo1x: true
.....
-K_aBTTKDhYsnbFv1Tuc:
- name: "Movies"
- postIds:
-K_GFDQjPoSmCJM3YAlB: true
.....
我的问题是如何在我的视图中处理这些关系。我还没有找到任何教程或例子,例如,在“索引”视图中,我希望列出所有贴子,并附上它们各自的标签
到目前为止,我只是返回所有帖子和所有标签,并将它们存储在单独的$scope
变量中。这很好,但是我还没有弄清楚如何只显示与每个帖子相关的标签。我首先认为应该可以尝试嵌套的ng repeat
结构。但事实证明,这比我预期的要复杂得多
这就是我想要达到的目标
<!-- For each tag in post object iterate tags -->
<div data-ng-repeat="t in posts.tags">
<span data-ng-repeat="tag in tags">
<!-- display only tags here that match with post.tag.id -->
</span>
</div>
简短回答:对数据进行非规范化 回答再长一点:您需要以一种有助于您在查询数据时提高效率的方式保存数据。因此,对于这种特殊情况,您可以保存标记的名称,而不是仅显示关联的
true
所以不是
{
posts:
-K_GOdSQvCQ2sAcHfo1x: {
descpripton: "This is a post...",
title: "This is a title...",
tags: {
-K_aBTTDKVUovZe3l0lX: true
}
}
}
你可以像这样保存它
{
posts:
-K_GOdSQvCQ2sAcHfo1x: {
descpripton: "This is a post...",
title: "This is a title...",
tags: {
-K_aBTTDKVUovZe3l0lX: "Sport" // <----- Notice the change
}
}
}
{
帖子:
-K_GOdSQvCQ2sAcHfo1x:{
描述:“这是一个帖子……”,
标题:“这是一个标题……”,
标签:{
-K_aBTTDKVUovZe3l0lX:“运动”//
{
posts:
-K_GOdSQvCQ2sAcHfo1x: {
descpripton: "This is a post...",
title: "This is a title...",
tags: {
-K_aBTTDKVUovZe3l0lX: "Sport" // <----- Notice the change
}
}
}