Вы пытаетесь проверить , действительно ли обновление, запрошенное пользователем, действительно или нет. Вы можете достичь этого с помощью .validate
правил .
{
"rules": {
"users": {
".indexOn": "username",
"username": {
".validate": "newData.val() === data.val()"
},
"$uid": {
".read": "auth != null",
".write": "auth.uid === $uid"
}
}
}
}
Теперь эти запросы не будут выполняться
UPDATE
{
username: 23,
displayName: "frank"
}
.
UPDATE
{
username: 37
}
Но они будут успешными
UPDATE
{
username: 77,
displayName: "doug"
}
.
UPDATE
{
displayName: "Doug"
}
** ПРИМЕЧАНИЕ **: в случае, если вы создаете учетную запись пользователя на самой стороне клиента, то есть имя пользователя будет изначально предоставляется самим клиентом, то вышеуказанный запрос завершится ошибкой, поскольку имя пользователя не существует. Для этого вам может потребоваться изменить на:
".validate": "!data.exists() || newData.val() === data.val()"