使 Firebase 查询搜索不区分大小写

12

我想从 Firebase 数据库中获取信息,但查询是区分大小写的,我不想它区分大小写,有没有办法在 Android Studio 中使查询不区分大小写?以下是查询代码

DatabaseReference SearchRef = (DatabaseReference) FirebaseDatabase.getInstance().getReference().child("Child1").orderByChild("Child2").startAt(searchText).endAt(searchText + "\uf8ff"); // \uf8ff is a white space
    Query Searchquery = Searchref;
    Searchquery.addValueEventListener...
1个回答

22

在使用 Firebase 数据库 时,通过 orderByChild() 函数,你将获得数据的升序或降序排列,但无法使用扩展查询自定义结果。

然而,你可以尝试另一种可能会更加耗费资源的方法。将你需要的所有子项作为数组获取,并保存 Child2 及其键。然后,你可以将字符串转换成大写或小写,并使用该键访问所需的结果。

参考结果如下:

FirebaseDatabase.getInstance().getReference("Child1").child(key);

编辑

根据你的逻辑,如果你想使 "Dave" 或者 "dave" 返回 Dave 和 dave,你可以编辑你的查询为 startAt(text.toUppercase)endAt(text.toLowerCase+ "\uf8ff")。这将返回 DAVE、Dave、dave 等等。


快速提问,startAt(text.toUppercase)会返回带空格的值吗?还是我需要添加"+ \uf8ff"? - captindfru
啊,我明白了,谢谢你的回答非常棒,是的,我知道,但我已经把整个应用程序都建立在 Firebase 数据库上了,现在改变会花费很多时间,而我没有太多时间。 - captindfru
25
如果我没有漏掉什么,那么在搜索D和d + "\uf8ff"之间时,你会得到Dave和dave,但你也会得到所有以E、F、G、……Z、a、b、c等开头的内容。 - Yossi
1
经历同样的事情 - David Chopin
6
难以相信 Firebase 没有考虑到这一点。 - SuperUberDuper
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接