[英]Firebase queries "where contains a string"
我正在嘗試在 Flutter-Firebase 中執行“where”查詢以按名稱過濾(如果 object 名稱為“Una casa roja”並且用戶寫入“casa”,則必須返回 object)。 我不知道我可以向誰查詢。 我只有這個,但不是我要找的:
.where('nombre', isGreaterThanOrEqualTo: nombre, isLessThan: nombre + 'z')
謝謝!
Firestore 默認不支持文本搜索。 但是,有一些解決方法。
當您將新用戶注冊到您的應用程序時,您可以將他們的用戶名作為一個數組存儲在 firestore 中,其中包括您搜索用戶的可能方式(查看附件圖像)。
您可以通過拆分名稱字符串來做到這一點。
setSearchParameters(String name) {
List<String> searchOptions = [];
String temp = "";
for (int i = 0; i < name.length; i++) {
temp = temp + name[i];
searchOptions.add(temp);
}
return searchOptions;
}
然后,您可以通過使用arrayContains
在該數組中搜索來查詢用戶集合,如下所示:
await usersCollection
.where('searchOptions', arrayContains: searchText)
.get()
.then((value) =>
value.docs.map((doc) => User.fromSnapShot(doc)).toList());
此解決方案適用於簡單的情況,但如果您需要高級搜索功能,則必須使用 3rd 方服務,例如Agolia 。
不幸的是,你不能這樣做。 Firebase 文檔說你不能這樣做。 我不知道為什么 firebase 不支持。 但要做到這一點,您可以使用第三方 API,例如 Agolia 或 Elastic。 有關更多信息,您可以在此鏈接https://firebase.google.com/docs/firestore/solutions/search的文檔中獲取它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.