Правила Firestore, позволяющие писать на двух отдельных Uids - PullRequest
1 голос
/ 08 октября 2019

enter image description hereenter image description here Я пишу приложение для чата, и это делается отдельно от раздела правил безопасности. В настоящее время я создаю два документа для каждого сообщения (по одному для каждого пользователя). Я в порядке, когда записываю документ в свой идентификатор пользователя, но в базе данных не допускается запись в другой идентификатор пользователя в паре.

Я попытался разрешить запись, если userId находится в resource.data другого файла

match /message/{user}/{chatRoomID}/{messageId} {
  allow read, write: if request.auth.uid == user || request.auth.uid in resource.data;
}

Как я могу сделать это, когда сообщение отправляется в базу данных, оно только для чтения и может бытьнаписано конкретным идентификатором пользователя ?? Каждый объект сообщения имеет ссылку на того, кто его отправил (идентификатор объекта каждого пользователя). Заранее спасибо !!

1 Ответ

1 голос
/ 08 октября 2019

Хотя in действительно является оператором в правилах безопасности, это не сработает:

request.auth.uid in resource.data

Оператор in проверяет, существует ли на карте ключ ,где гораздо более вероятно, что вы сохраните UID другого пользователя в значении поля.

Чтобы проверить, имеет ли определенное поле определенное значение, используйте что-то вроде этого:

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