2016-12-02 37 views
0

比方說,我有這樣的數據庫:Firebase - 如何過濾與equalTo()類似的內容,而是檢查它是否包含值?

J-DSKFJASKDFJASKDJ:{ 
    username: "Burned" 
}, 
J-KASDJFAKSDJFKDSJ:{ 
    username: "BurnedFirebase" 
}, 
J-DFJKADSJFAKSDJFK:{ 
    username: "FirbaseFilteringIsVeryLackingThereforItSucks" 
} 

如果我用這個:

Query q = database.orderByChild("username").equalTo("Burned"); 

它實際上將返回唯一的「Burned」,雖然在數據庫中BurnedFirebase。這是因爲equalTo()不能用作諸如的方法。

有沒有類似於的方法?如果沒有,是否有解決方法?

+1

您可以結合startAt()和endAt()方法將結果限制爲指定範圍的值。 –

+0

@UmarAta感謝您的鏈接。但弗蘭克沒有提供一個例子,我不明白我該怎麼做。我認爲,爲了幫助未來的訪問者,您應該在我們將其作爲副本關閉之前發佈示例。 –

+0

@UmarAta我只使用'startAt(「myQueryText」)。endAt(「myQueryText」)'? –

回答

1

如果搜索總是在單詞的開頭(你不尋找斯內德和期待燒上來),你可以使用高Unicode字符:

query.startAt("Burned").endAt("Burned\uf8ff") 

來源:https://firebase.google.com/docs/database/admin/retrieve-data#range-queries

以上在查詢中使用
...dinosaursRef.orderByKey().startAt("b").endAt("b\uf8ff")... 

的\ uf8ff字符是Unicode的範圍內的非常高的代碼點 。因爲它是在 Unicode中最常用的字符之後,所以查詢將匹配以b開頭的所有值。