本文介绍了如何解决键或变通方法中的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
在您的情况下,我看到两个主要选择:
- 已对密钥中的违规字符进行编码。
- 从密钥中筛选有问题的字符。
筛选肯定更简单,但不可逆:在这种情况下,您永远无法从键中取回确切的值。
编码是可逆的。例如:我们可以通过将,
转换回.
来从上一个示例中获得电子邮件地址。由于电子邮件地址中永远不会出现,
,因此转换是无损和可逆的
这篇关于如何解决键或变通方法中的Firebase数据库禁用字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!