如何解决键或变通方法中的Firebase数据库禁用字符 [英] How can I solve FireBase database forbidden characters in Key or a workaround

查看:28
本文介绍了如何解决键或变通方法中的Firebase数据库禁用字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个Firebase数据库结构,我真的很想要这样的密钥:

"US": {
    "name": "United States",
    "PATH_TO_STREETS": {
        "US/California/Orange County/Orange/3138 E Maple Ave": "-K1234567"
        "US/California/Orange County/Orange/3139 E Maple Ave": "-K12334rt"
        "US/California/Orange County/Orange/3140 E Maple Ave": "-K1234r34"
     },
 }

因为密钥是唯一的,所以如果不是Firebase禁止的数据库字符,这是一个非常好的主意:

. (period)    
$ (dollar sign)    
[ (left square bracket)    
] (right square bracket)    
 (hash or pound sign)    
/ (forward slash)    

上述密钥组成的California路径来自Google Places API,我想知道是否还能弹出更多被禁止的数据库字符,以及当未来的密钥具有#或$时,如何抵消这一点。

我还需要一种使用此密钥的方法:

String[] split = theKey.split("/");

如果我替换(正斜杠),我应该使用什么,或者可以用另一种方式来做这件事。Google Places API的自动完成结果是否包含任何禁用的数据库字符?

我可以这样做:

// test for . $ # [ ] / and replace them
public static String removeInvalidChars(String text) {
    text = text.replace(".", "");
    text = text.replace("$", "");
    text = text.replace("#", "");
    text = text.replace("[", "");
    text = text.replace("]", "");
    text = text.replace("/", "");
    return text;
}

有了这个removeInvalidChars,我想它会爆炸,感觉我对键结构失去了控制:

"US/California/Orange County/Orange/3138 E Maple Ave"
也许我应该创建一个单独的根节点来存储上述路径的散列版本。然后保存散列,如下所示:

"US": {
    "name": "United States",
    "HASH_TO_STREETS": {
        "sadsasasjkinIGhGVBJKHBHIUOuijHdBJLI": "US/California/Orange County/Orange/3138 E Maple Ave",
        "KJHGjgh67HGCFhgvhjbIuiokkBHJbkjhBkj": "US/California/Orange County/Orange/3139 E Maple Ave",
        "LKJHNJHKHky7y78gHGHGJ675JHJHdbHJBjh":  "US/California/Orange County/Orange/3139 E Maple Ave"
     },
 }

嘿,也许这就是答案……嗯,你觉得呢?

推荐答案

大多数开发人员将编码值存储在键中。最常见的是在存储电子邮件地址时,在这种情况下,它们使用,转义电子邮件地址中的.

"puf@firebaseui,com": true

在您的情况下,我看到两个主要选择:

  1. 已对密钥中的违规字符进行编码。
  2. 从密钥中筛选有问题的字符。

筛选肯定更简单,但不可逆:在这种情况下,您永远无法从键中取回确切的值。

编码是可逆的。例如:我们可以通过将,转换回.来从上一个示例中获得电子邮件地址。由于电子邮件地址中永远不会出现,,因此转换是无损和可逆的

这篇关于如何解决键或变通方法中的Firebase数据库禁用字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆