有没有办法在不使用子项的情况下使 Firebase 搜索查询不区分大小写? [复制]

Posted

技术标签:

【中文标题】有没有办法在不使用子项的情况下使 Firebase 搜索查询不区分大小写? [复制]【英文标题】:Is there a way to make a Firebase search query case insensitive without using child? [duplicate] 【发布时间】:2021-12-14 06:45:42 【问题描述】:

这是我在 Dart 中的 Firestore 查询:

getResults()
    FirebaseFirestore.instance.collection('items').where("itemModel", isGreaterThanOrEqualTo: _searchQueryController.text.trim())
        .where("status", isEqualTo: "approved")
        .get()
        .then((results)
          setState(() 
            items = results;
          );
    );
  

但它区分大小写。例如,如果我有一个名为 "Checkboard"itemModel,如果我搜索 "checkboard"(带有小写的“c”),它将不会显示。如何在不修改 Firestore 数据库中存储的数据的情况下使其不区分大小写?这是我的 Firestore 数据库的图片以供参考: Picture of Firestore Database

【问题讨论】:

每次搜索内容时,使用.toLowerCase() 使文本也区分大小写,例如:_searchQueryController.text.toLowerCase().trim() 【参考方案1】:

Firestore 中的所有查询都区分大小写。

如果您需要不区分大小写的机制,则需要编写一个单独的字段,其中包含该字段的不区分大小写版本并对其进行查询。例如:

db.collection("items").where("itemModel", "==", "Checkboard")
db.collection("items").where("lowercaseItemModel", "==", "checkboard")

我建议您阅读@DanMcGrath 的一个很好的答案:

Cloud Firestore Case Insensitive Sorting Using Query

或者@samthecodingman 的替代方案:

Is there a way to search In Firebase firestore without saving another field in lowercase for case-insensitive search?

【讨论】:

以上是关于有没有办法在不使用子项的情况下使 Firebase 搜索查询不区分大小写? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在不重新启动应用程序的情况下使 NSBundle 本地化缓存失效? [iOS]

如何在不使用系统关闭按钮的情况下关闭MDI子项

是否可以在不安装 Excel 的情况下使其自动化?

在不混合的情况下使不透明的 UIView 变暗

如何在不使用滤镜的情况下使图像变暗? [复制]

Pygame:如何在不按任何键的情况下使精灵面对相同的方向