2017-04-04 99 views
1

现在,我试图用这样的查询:Angularfire2查询由子子孙

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

不幸的是我没有真正得到什么...我认为这是可以通过一个孩子的孩子进行查询。我仍然希望它是!

我的结构:

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

谢谢!

补充问题:是否有可能从数据库中获得某种标签类型(比如运动,足球......),还是能够收集/然后过滤它们的任何良好做法?我会将标签动态地添加到新闻,然后以某种方式能够查询所有这些... (我有SQL的经验,我仍然不能完全理解这个noSQL背后的逻辑)

回答

2

我意识到以后几个尝试,在火力,当你写真正它实际上包括一个真正的布尔值,而不是一个“真正的”字符串,所以现在它正在以这种方式工作:

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

不错。我相信它对我也是有用的。谢谢! – vinagreti

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中复制事物没有问题。唯一需要注意的是,当您在标签表中更改此标签时,您必须更新每个使用它的文档,以避免不一致。

+0

不幸的是,我只是拼错了标签* s在这里...不是代码..所以这不是问题.. – Colosh