Firestore данных с несколькими переменными в имени документа - PullRequest
0 голосов
/ 22 апреля 2020

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

Я создал документ пожарного магазина под названием «дни», я намеревался иметь структуру

- days
  - {user1}-{date}
     - events: [{array of events during the day}]
  - {user2-{date}
...

В правилах только владелец должен иметь возможность просматривать данные своего события .

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId}/{documents=**} {
      allow read, write: if isOwner(userId)
    }
     match /day/{userId}-{date}/{documents=**} {
      allow read, write: if isOwner(userId)
    }
  }

  function isOwner(userId) {
    return request.auth.uid == userId;
  }
}

Я пробовал несколько структур создания регулярных выражений, чтобы получить {userId}-{date}, но не получил ничего, что работает.

Возможно ли это с Firebase? Я делаю это структурно неправильно? Должен ли я использовать вложенные коллекции?

1 Ответ

1 голос
/ 22 апреля 2020

Правила безопасности Firestore не допускают никаких типов регулярных выражений на пути документа. Правило может соответствовать только 0 или более целым сегментам пути, используя подстановочный знак. Вам нужно будет найти другой способ структурирования ваших данных.

Названия коллекций сами по себе не должны содержать несколько элементов данных. На самом деле, лучше, если они вообще не содержат никаких данных (за исключением таких вещей, как UID, чьи значения c должны использоваться в правилах безопасности). Я предлагаю просто переместить дату в поле в документе для дневной коллекции или использовать вложенную коллекцию для группировки вещей по родительскому документу.

...