Firebase实时数据库具有防止这些字符的字符集限制
. (period)
$ (dollar sign)
[ (left square bracket)
] (right square bracket)
# (hash or pound sign)
/ (forward slash)
出现在主键中。
但是此library for firebase real-time database on google apps script使用转义的电子邮件作为 auth.uid
因此,我将FB实时数据库的结构构造为如下:
{
users={
auth.uid={ //auth.uid == escaped email
phone_no=+123456789012,
email=foo@bar.com
},
... //rest of the array
}
}
我担心的是,两个不同的用户可能拥有相同的转义电子邮件。
例如:
User1电子邮件:johndoe@foobar.com
User1逃脱了电子邮件:johndoefoobarcom
User2电子邮件:j.o.h.ndo.e@foobar.com
User2转义了电子邮件:johndoefoobarcom
电子邮件服务(尤其是Gmail)是否允许用户注册与上图相似的电子邮件?
这就是我的规则
{
"rules": {
"users": {
"$user_id": {
".write": "$user_id === auth.uid",
".read": "$user_id === auth.uid"
}
}
}
}
因此,您可以看到为什么我使用转义的电子邮件(auth.uid)作为根密钥(因为auth.uid已经是转义的电子邮件地址)
这是Apps脚本代码-> https://codepen.io/edge-developer/pen/JVPNOY
答案 0 :(得分:3)
您使用的Firebase版本非常旧,您需要升级到Firebase js 5.8.5
。
另外,不,最好使用在验证特定用户时获得的userId。使用uid的主要原因是因为uid对于每个用户都是唯一的。
在这里检查: