有没有办法在不使用子项的情况下使 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 搜索查询不区分大小写? [复制]的主要内容,如果未能解决你的问题,请参考以下文章