База данных реального времени Firebase имеет ограничения набора символов, которые не позволяют этим символам
. (period)
$ (dollar sign)
[ (left square bracket)
] (right square bracket)
# (hash or pound sign)
/ (forward slash)
присутствовать в первичном ключе.
Но эта библиотека для реального времени Firebaseбаза данных в скрипте приложений Google использует экранированный адрес электронной почты как auth.uid
Поэтому я структурировал свою БД реального времени FB как ниже:
{
users={
auth.uid={ //auth.uid == escaped email
phone_no=+123456789012,
email=foo@bar.com
},
... //rest of the array
}
}
Меня беспокоит то, что два разных пользователя могут иметь один и тот же экранированный адрес электронной почты.
Например:
User1 email:johndoe@foobar.com
User1 сбежал электронная почта: johndoefoobarcom
User2 email: johndo.e@foobar.com
User2 сбежал электронная почта: johndoefoobarcom
Позволяют ли почтовые службы, особенно Gmail, пользователям регистрировать электронные письма, похожие на показанные выше?
Вот как выглядят мои правила
{
"rules": {
"users": {
"$user_id": {
".write": "$user_id === auth.uid",
".read": "$user_id === auth.uid"
}
}
}
}
Итак, вы можете понять, почему я используюэлектронная почта (auth.uid) как rootkey (потому что auth.uid ужеон избежал адреса электронной почты)
Вот код скрипта Apps -> https://codepen.io/edge-developer/pen/JVPNOY