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!
}
});
现在我正在尝试使用这样的查询:
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!
}
});