【问题标题】:Firebase stripping the "+" sign from my phonenumber idFirebase 从我的电话号码 ID 中删除“+”号
【发布时间】:2015-10-15 09:44:49
【问题描述】:

我有一个 firebase 集合,我使用以“+”号开头的电话号码作为 id。

因此,当我创建 Firebase 引用以更新计数器时,创建的 Firebase 引用不带“+”号,这会导致创建一个不带 + 号的新行。为什么 Firebase 会去掉 + 号?

我这样创建的 firebase ref:

String id = "+919920801121";
Firebase callCounterRef = new Firebase(FbDbHelper.FB_PROJECTS + projectId + "/leads/" + id + "/callCounter");

这将打印参考如下:

https://myapp.firebaseio.com/projects/-K0QiZGSCTobFLE8TItb/leads/%20919920801121/callCounter

这将创建一个新的潜在客户,电话号码为 919920801121,而之前的潜在客户的号码为 +919920801121

我怎样才能解决这个问题?

【问题讨论】:

  • 传递到 Firebase() 的 URL 将传递到 HTTPS 请求和 wss:// 请求中。因此,它必须是一个有效的 URL。您必须对传入的任何参数进行urlencode。尝试new Firebase(base_url).child(projectId+'/leads/'+...) 来避免这种情况。
  • + 是一个特殊字符是 url。通常它表示空间,这里编码为%20

标签: android firebase firebase-realtime-database


【解决方案1】:

好的,我找到了解决方案。

我没有创建统一的路径,而是使用 .child() 方法,该方法保留了 + 符号,如下所示:

Firebase callCounterRef = new Firebase(FbDbHelper.FB_PROJECTS + projectId + "/leads/").child(id+ "/callCounter");

这尊重子键并且不对结果进行编码,就像上面所做的那样。

【讨论】:

    猜你喜欢
    • 2021-03-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多