簡體   English   中英

Firebase 查詢“其中包含字符串”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM