0

Итак, я ищу, чтобы хранить некоторую пользовательскую информацию в базе данных Firebase в реальном времени при создании учетной записи пользователя, но это не должно быть доступно для записи пользователем позже, и я не могу понять, как мне следует делая это. Из того, что я понимаю, когда создается учетная запись, все данные, помимо входа в определенные данные (вход в facebook, логин google, адрес электронной почты/пароль), хранятся «пользователем» в том смысле, что они записываются только в те места, где пользователь имеет доступ к записи в ,Как добавить данные пользователя при создании учетной записи, которые не могут быть отредактированы пользователем?

Что я хочу сделать, это написать дополнительные данные о создании учетной записи, которые не могут быть впоследствии изменены пользователем, но, похоже, единственный способ записать эти данные в первую очередь для того, чтобы пользователь мог напишите на него доступ. Как я могу писать данные один раз при создании учетной записи, которые не могут быть позже записаны пользователем?

Пример:

Скажите, что я пытаюсь сохранить номер телефона с учетной записью, и мои правила безопасности выглядеть следующим образом:

"rules":{ 
    ".read":false, 
    ".write":false, 
    "users":{ 
    "$user_id":{ 
     ".read": true, 
     "writeable_data":{ //written to on account creation, can be changed later by user 
     ".write": "auth.uid === $user_id", 
     "name": {".validate":true} 
     }, 
     "unchanging_data":{ //written to on account creation, shouldn't be later changed 
     "phone_number": {".validate":"newData.isNumber() && newData.val().length() == 10"} 
     } 
    } 
    } 
} 

Как я могу сделать так, что поле phone_number является написанный на момент создания учетной записи (предположим, что он указан из любой веб-формы, которую они заполняют или что-то подобное), но затем не может быть снова отредактирован пользователем? Есть ли способ, которым это можно сделать с правилами безопасности базы данных Firebase или мне нужно сделать вызов на какой-то отдельный сервер с доступом администратора и который подтверждает данные и записывает?

ответ

0

Да. Если вы проверите, чтобы убедиться в отсутствии ранее существовавших данных, будут предотвращены обновления (и удаления):

"unchanging_data": { 
    "phone_number": { 
    ".validate": "!data.exists() && newData.isNumber() && newData.val().length() == 10" } 
    } 
} 
+0

Отлично! Именно то, что я искал. Странно, что мне было так трудно найти его. Благодаря! – aknuck