Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在视图中显示Firebase多对多关系的最佳实践(AngularFire)_Javascript_Angularjs_Angularjs Ng Repeat_Angularfire_Nosql - Fatal编程技术网

Javascript 在视图中显示Firebase多对多关系的最佳实践(AngularFire)

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

我发现了很多关于如何在Firebase中构建多对多关系的示例。按照我见过的最推荐的设置方式,我在Firebase中有一些基本的帖子和标签数据:

/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
      }
    }
}