Рекурсивное правило безопасности Firebase RTD - PullRequest
0 голосов
/ 13 июля 2020

В моей базе данных Firebase Realtime у меня есть структура комментариев и ответов, как показано ниже.

{
  "post-comments": {
    "$postId": {
      "pushKey1": {
        "uid": "uid1",
        "text": "comment 1",
        "replies": {
          "pushKey2": {
            "uid": "uid2",
            "text": "reply 1",
            "replies": {
               ... and so on
            }
          }
        }
      }
    }
  }
}

Все комментарии будут c опубликованы для чтения. Я хотел бы написать рекурсивное правило безопасности (поскольку может быть любое количество вложенных "replies" полей), которое позволяет пользователю:

  • pu sh, если новые данные совпадают auth.uid и uid поля
  • обновить комментарий / ответ, если auth.uid совпадает с существующим полем uid
  • удаление будет производиться с помощью мягкого удаления, поэтому по сути это то же самое в качестве обновления

Возможно ли такое? Я немного погуглил, и в результате поиска появилась эта ссылка: https://firebase.google.com/docs/rules/rules-behavior#recursive_wildcards, но этот раздел страницы, похоже, больше не существует. Эта функция еще существует? Или есть другой способ сделать это? Если это важно, я использую его на стороне клиента с React.

1 Ответ

1 голос
/ 13 июля 2020

Это обычная практика - видеть подобные иерархии от разработчиков, плохо знакомых с Realtime Database, поскольку она поддерживает иерархии, имеет смысл захотеть их использовать.

Но нет способа определить такие рекурсивные правила безопасности .

Также довольно редко можно увидеть рекурсивную модель данных в зрелом приложении Firebase именно потому, что это затрудняет контроль доступа.

Я бы рекомендовал хранить комментарии в виде плоского списка, с parentId там. Присвойте комментариям верхнего уровня parentId из none или любое другое фиксированное значение, и вы сможете запрашивать все, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...