如何在google firebase上启用禁用字符?



如何在google firebase上启用禁用字符?('.','#','$','[',']')我想允许使用电子邮件注册我的数据库,但是,正因为如此,我不能。提前感谢您的帮助!

实时数据库中的Firebase键不能包含这些字符,并且没有办法改变这种行为。从docs

如果您创建自己的密钥,它们必须是UTF-8编码的,可以是a最大长度为768字节,不能包含。、$、#、[、]、/或ASCII字符控制字符0-31或127。不能使用ASCII控制值本身中的字符。

Firestore也有一些来自文档的要求

Must be valid UTF-8 characters
Must be no longer than 1,500 bytes
Cannot contain a forward slash (/)
Cannot solely consist of a single period (.) or double periods (..)
Cannot match the regular expression __.*__
(for documentIds) If you import Datastore entities into a Firestore database, numeric entity IDs are exposed as __id[0-9]+__

很多刚开始使用Firebase的人都倾向于通过他们的电子邮件地址来存储用户

users
jay@example.com
name: "asdadsa"

但是这个策略有一个固有的问题;你最终会在数据库中存储对该用户的引用然后你会使用电子邮件作为该引用

my_friends
jay@example.com: true

people_I_know
0: jay@example.com

等。

但是…如果发生这种情况,电子邮件地址更改,您不仅必须删除主用户节点(节点键不能更改),然后重新编写它,还必须更改整个数据库中该电子邮件的每一次出现!

最佳实践是将节点键(documentsId)与其包含的数据解除关联

users
uid_0 //a users uid or a randomly generated firebase id
name: "Jay"
email: "jay@example.com"

那么您将存储uid或生成的id作为参考,而不是电子邮件,这使得更改电子邮件地址很容易,因为它不会影响任何其他节点

my_friends
uid_0: true

people_I_know
0: uid_0

因此,要回答这个问题,用户将使用他们的电子邮件地址注册,这将在Firebase中创建具有关联uid的用户帐户。根据用户uid在实时数据库或Firestore中存储其他用户信息,而不是他们的电子邮件。

最新更新