javascript - 字段末尾的 Firebase 字符串匹配
问题描述
想象以下数据:
{
"name": "Abcdef",
"age": 21
},
{
"name": "Rodrigo",
"age": 24
},
{
"name": "Matt",
"age": 30
},
{
"name": "Def",
"age": 21
}
如何使此搜索等效:
SELECT * FROM table WHERE name = "%def"
所以我得到这个结果:
{
"name": "Abcdef",
"age": 21
},
{
"name": "Def",
"age": 21
},
(或者至少是第一个结果,因为它的 %def)我已经尝试过startAt
并且endAt
也使用过,"\uf8ff"
但似乎没有任何效果....
这应该是解决方案:
ref.orderByChild("name").endAt("def"+"\uf8ff").once('value'....
含义:它以'def'结尾,但这不起作用....
(我正在使用 Javascript SDK)
(注意:我的问题不是大写 D,而是字符串匹配)
解决方案
您正在调用的方法被调用endAt()
,但您正试图将其用作endsWith()
. 这是一种不同类型的操作,Firebase 不支持。
Firebase 数据库查询只能进行前缀匹配:查找以某个子字符串开头的字符串。没有用于后缀匹配的操作,也没有用于查找包含某个值的字符串的操作。
如果您的用例确实是后缀匹配,则常见的解决方法是添加一个包含反向字符串的属性并startAt().endAt()
对其执行操作。
所以:
{
"name": "Abcdef",
"name_reverse": "fedcbA",
"age": 21
},
{
"name": "Def",
"name_reverse": "feD",
"age": 21
},
接着:
ref.orderByChild("name_reverse").startAt("fed").endAt("fed\uf8ff")
推荐阅读
- c - 用 C 编写大量文件后 Ubuntu 冻结
- javascript - 如何使用 Jest 在内部使用异步调用和调度测试动作减速器?
- javascript - 特定主导航链接的导航子菜单未正确显示
- python-3.x - 如何在pyspark中使用带有groupby的聚合表达式列表?
- android - 将现有的 android 应用导出为 aar(如库)
- jquery - 只有一个 div 使用 AJAX、jQuery 和 Circliful jQuery 插件填充
- xaml - UWP 中的 ItemsControl StatusChanged 等效项
- python - 如何在我的代码中实现回归模型图?
- asp.net - 在 IIS 上运行 Web 应用程序时出现 BadImageFormatException,但我的所有项目都是任何 CPU
- sql - 将 DATEDIFF 拆分为单独的月份