【问题标题】:Is it possible to query Firebase on emoji characters?是否可以在表情符号字符上查询 Firebase?
【发布时间】:2019-11-12 16:19:51
【问题描述】:

我想从原生支持表情符号的 swift 执行 firebase 查询。但是,在执行以 ~ 结尾的查询时,我注意到奇怪的行为,其中与表情符号相关的结果被跳过。下面是我要执行的查询示例。其中起始值是某个名称,而结束值是与 ~ 连接的名称。我注意到当名称以表情符号结尾时,查询中不会返回带有表情符号的名称。是否可以像 Firestore 中那样使用 Firebase 实时数据库时对表情符号执行查询?

Database.database()
    .reference(withPath: "TagIDs")
    .queryOrdered(byChild: "name")
    .queryStarting(atValue: startValue)
    .queryEnding(atValue: endValue)
    .observeSingleEvent(of: .value, with: { (snapshot) in
    …

输入名称 = “家”

预期输出 = “home????”

实际输出:快照为空

【问题讨论】:

  • 如果您编辑问题以显示与您预期不同的实际输入和输出,则可能更容易看到这里发生了什么。
  • @DougStevenson 感谢您在建议的编辑中添加的帮助,希望对您有所帮助,如果我可以提供更多帮助,请告诉我。
  • 你的 startValue 和 endValue 是多少?我们应该能够完全重现您所看到的问题。现在,只是没有足够的信息。最好删除所有变量并使用硬编码字符串。还显示数据库的内容以及预期结果。

标签: ios swift firebase firebase-realtime-database emoji


【解决方案1】:

从您的描述看来,您正在搜索:

Database.database()
    .reference(withPath: "TagIDs")
    .queryOrdered(byChild: "name")
    .queryStarting(atValue: "home")
    .queryEnding(atValue: "home~")

然后期望得到"home?" 结果。但 ? 实际上在 Unicode 规范中位于 ~ 之后,因此您的查询在 ? 之前结束。

要获取以"home" 开头的全部TagIDs 值,请在"home\uf8ff" 处结束查询,\u{f8ff} 是 Unicode 中最后一个代码点的转义。

【讨论】:

  • 非常感谢弗兰克的帮助!那解决了它! Swift 中的一个小注释是\u{f8ff}
猜你喜欢
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 2019-06-11
  • 1970-01-01
  • 2012-09-11
  • 1970-01-01
  • 1970-01-01
  • 2015-08-25
相关资源
最近更新 更多