2017-04-04 104 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