我们可以将电子邮件ID作为Firebase数据库中的密钥吗?

时间:2017-01-18 06:49:33

标签: json firebase firebase-realtime-database

我想在用户登录时创建一个登录系统 在登录用户的电子邮件ID中,我想检索EID。

我想要的JSON结构是:

<script type="text/javascript">
        /* test in my own jsp file with isELIgnored="false"
          <%@ page language="java" contentType="text/html; charset=UTF-8"
            pageEncoding="UTF-8" isELIgnored="false"%>
          <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
        */
        <% request.getSession().setAttribute("author", "Vincent"); %>
        var author = "<%= request.getSession().getAttribute("author") %>";
        alert(author);
        author = "${sessionScope.author}";
        alert(author);
</script>

我尝试将具有上述结构的JSON文件导入Firebase项目数据库,但收到错误提示“./ ...”不能成为密钥的一部分。

3 个答案:

答案 0 :(得分:2)

我遇到了同样的限制,我更换了&#39;。&#39;用&#39; __ dot __&#39;将电子邮件ID作为密钥。

答案 1 :(得分:2)

一个字符替换另一个字符可能会导致混乱,并可能在将来引起严重问题。

对于该实例,暂时可以将.替换为_DOT_。以后说您要取回原始电子邮件以进行验证; [没关系]我可以将_DOT_替换为.。如果有人收到电子邮件actual._DOT_@actualdot.com

,此操作将失败

解决方案是使用电子邮件哈希。我现在更喜欢md5。

因此结构应为:

{
    "<md5 hash of 'joel@dept.com'>": { 
            "EID":"0153" 
     }, 
    "<md5 hash of 'Stan@dept.com'>": { 
             "EID":"0163" 
    }
 }

答案 2 :(得分:0)

Firebase不支持。[] {}之类的字符,因此如果您想使用电子邮件作为主键生成,则必须替换.replace(“。”,“,”)