Правила базы данных Firebase RealTime с использованием регулярного выражения для настраиваемого идентификатора - PullRequest
0 голосов
/ 26 мая 2020

У меня есть требование, чтобы пользователи могли писать только в свой узел учетной записи в базе данных RT. Обычно это работает:

  "accounts": {
    "$uid": {
        ".write": "$uid === auth.uid",
        ".read": "$uid === auth.uid"
    },

Однако требуется, чтобы uid из Authentication хранился внутри «учетных записей» с префиксом «US _».

Итак, я пробовал это:

  "accounts": {
    "$uid": {
        ".write": $uid.matches(/^US_/) + "auth.uid",
        ".read": "$uid === auth.uid"
    },

и это:

  "accounts": {
    "$uid": {
        ".write": "$uid === /^US_/auth.uid",
        ".read": "$uid === auth.uid"
    },

Второй кажется ближе к работе, и ошибка:

Ошибка сохранения правил - Строка 44: недопустимый флаг после регулярного выражения

Мне интересно, возможно ли это вообще?

UPDATE

Это правильно проанализировано, но, похоже, работают (я не могу заставить правило пройти):

  "accounts": {
    "$uid": {
        ".write": "$uid === 'US_' + 'auth.uid'",
        ".read": "$uid === auth.uid"
    },
  },

Структура базы данных

  accounts:
    uid: "US_blah",
    createdAt: <datetime>,
    username: "MickeyMouse"

1 Ответ

0 голосов
/ 26 мая 2020

Оказывается, регулярное выражение мне не понадобилось. Это работает:

  "accounts": {
    "$uid": {
        ".write": "$uid === 'US_' + auth.uid",
        ".read": "$uid === auth.uid"
    },
...