2016-07-07 66 views
0

我正在使用firebase存儲一些數據。當我使用queryOrderedByChild(「count」)時,我得到以下警告firebase .index使用autoId警告

使用未指定的索引。考慮加入「.indexOn」:在‘計數’/評論/ -KM449ubmviUkGNIj2fq以獲得更好的性能安全規則

我的火力結構看起來像這樣

"comments" : { 
"-KM449ubmviUkGNIj2fq" : { 
    "-KM44Ax8MdcBBPT_BQiO" : { 
    "count" : 3, 
    "comment" : "a", 
    "commentOwner" : "hakV4smGyveurPhFN7g9rad4xsP2", 
    "date" : "1467890319.38933" 
    }, 
    "-KM45-Eb6yvXSAfhBrLX" : { 
    "count" : 2, 
    "comment" : "b", 
    "commentOwner" : "hakV4smGyveurPhFN7g9rad4xsP2", 
    "date" : "1467890533.56065" 
    }, 
    "-KM488JCKddZhbev466U" : { 
    "count" : 4, 
    "comment" : "c", 
    "commentOwner" : "hakV4smGyveurPhFN7g9rad4xsP2", 
    "date" : "1467891357.06534" 
    }, 
    "-KM48SXJ83L7-mpE5nma" : { 
    "count" : 0, 
    "comment" : "d", 
    "commentOwner" : "hakV4smGyveurPhFN7g9rad4xsP2", 
    "date" : "1467891439.88917" 
    }, 
    "-KM4AN_rj-ycRZYESnh_" : { 
    "count" : 0, 
    "comment" : "e", 
    "commentOwner" : "hakV4smGyveurPhFN7g9rad4xsP2", 
    "date" : "1467891944.01086" 
    }, 

基本上,我想生成火力點的列表具有最高數量的快照(類似於喜歡的數量)。

由於我的帖子和評論有從firebase生成的獨特ID,我不知道我應該在索引方面做些什麼來消除警告。

我曾嘗試以下安全規則,這是行不通的

"rules": { 
".read": "auth != true", 
".write": "auth != true", 
"comments" : { 
    ".indexOn" : ["count"] 
    } 
} 

回答

2

最有可能你正試圖查詢特定文章的評論。

在這種情況下,您需要告訴數據庫索引每篇文章的評論。對於語法是:

"rules": { 
    ".read": "auth != true", 
    ".write": "auth != true", 
    "comments" : { 
    "$commentId": { 
     ".indexOn" : ["count"] 
    } 
    } 
} 

有了這個,你可以通過它們的count財產的價值秩序特定文章的評論。

+0

非常感謝弗蘭克。我從其他文章中偶然發現了你的名字,並希望你有時間看看你做的事情!非常感激。我想閱讀更多關於$符號以及語法如何工作的信息。你會推薦什麼?謝謝 – user172902

+0

$ just意味着你在那裏的任何規則都適用於每個子節點。在該部分中,您可以使用'$ commentId'來引用匹配的節點。要了解關於安全規則的所有信息,我強烈建議從FireWire安全的關鍵(https://youtu.be/PUBnlbjZFAI)(視頻) –