现在我正在尝试使用这样的查询:
this.topNews = this.af.database.list('news',{
query: {
orderByChild: 'label/sport',
equalTo: 'true'
}
});
不幸的是,我真的没有得到任何东西......我认为可以通过孩子的孩子来查询..我仍然希望它是!
我的结构:
news
-new1
-content...
-labels
-sport : true
-soccer: true
-new2
...
谢谢!
Addotional问题:是否有可能从数据库获取 - 某种方式的每种标签类型(如运动,足球..),或者是否能够收集/然后通过它们进行过滤是一种好的做法?我将动态添加标签到新闻,然后以某种方式能够查询所有这些... (我有使用SQL的经验,我仍然无法完全理解这个noSQL背后的逻辑)
答案 0 :(得分:2)
经过几次尝试后我意识到,当你写 true 时,它实际上包含了一个真正的bool值,而不是一个'true'字符串,所以现在它正在这样工作:
this.topNews = this.af.database.list('news',{
query: {
orderByChild: 'labels/sport',
equalTo: true //this changed!
}
});
答案 1 :(得分:1)
这不是一个完整的答案,只是猜测。尝试改为:
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中复制东西没有问题。您应该注意的唯一事项是,当您在标签表中更改此标签时,您必须更新使用它的每个文档,这样您才不会出现不一致。