child 后代的 Angularfire2 查询

Angularfire2 query by child descendant

现在我正在尝试使用这样的查询:

this.topNews = this.af.database.list('news',{
  query: {
    orderByChild: 'label/sport',
    equalTo: 'true'
  }
});

不幸的是,我什么也没得到...我认为可以通过 child 的 child 查询。我仍然希望它是!

我的结构:

news
  -new1
    -content...
    -labels
      -sport : true
      -soccer: true
  -new2
  ...

谢谢!

其他问题:是否有可能以某种方式从数据库中获取每种标签类型(如运动、足球等),或者能够 collect/and 然后按它们进行过滤是否有任何好的做法?我会将标签动态添加到新闻中,然后以某种方式能够查询所有这些标签...... (我有过SQL的经验,还是不能完全理解这个noSQL背后的逻辑)

这不是一个完整的答案,只是一个猜测。试试改成这样:

this.topNews = this.af.database.list('news',{
  query: {
    orderByChild: 'labels/sport',
    equalTo: 'true'
  }
});

this.topNews = this.af.database.list('news',{
  query: {
    orderByChild: 'label',
    equalTo: 'sport'
  }
});

关于结构部分,我认为你应该维护一个单独的集合来保存标签,这样你可以更快地访问它。在 noSQL 中复制东西没有问题。唯一需要注意的是,当您在标签 table 中更改此标签时,您必须更新使用它的每个文档,以免出现不一致。

经过几次尝试后我意识到,当您在 firebase 中编写 true 它实际上包含一个真正的 bool 值,而不是 'true' 字符串,所以现在它正在以这种方式工作:

    this.topNews = this.af.database.list('news',{
  query: {
    orderByChild: 'labels/sport',
    equalTo: true //this changed!
  }
});