Cloud Firestore Правила безопасности для операций с массивами - PullRequest
0 голосов
/ 05 января 2019

Я пытаюсь ограничить определенные операции в Firestore созданием или добавлением в массив. Как мне это сделать? Как я могу отличить arrayUnion() от arrayDelete()? А как отличить операции с массивами от всех других операций?

Обновление : Пока что из того, что я получил, покопавшись в Firestore API, я предполагаю, что что-то вроде allow create, FieldValue.arrayUnion: if true может сработать, но я еще не тестировал его, обновится, когда Я проверял это.

1 Ответ

0 голосов
/ 05 января 2019

Если вы хотите убедиться, что любые обновления в документе не удаляют существующие значения из массива, вы ищете hasAll:

allow update: if request.resource.data.arrayField.hasAll(resource.data.arrayField);

Я просто быстро проверил это в симуляторе. Обновление документа с arrayField: ["value1", "value2"], I:

  • Ошибка при записи arrayField: ["value1"]
  • Успешно при написании arrayField: ["value1", "value2"]
  • Успешно при написании arrayField: ["value1", "value2", "value3"]
...