Правило Firestore - ограничение размера данных - PullRequest
0 голосов
/ 24 мая 2019

Я хотел бы ограничить размер данных записей, добавленных с использованием правил.Для некоторых коллекций я могу просто использовать:

request.resource.data.values().join('').size() < 300;

Но если документ содержит поле метки времени, это не сработает.Поэтому я должен проверить размер () каждого отдельного поля, которое немного запутанно.

Я не смог найти способ отфильтровать определенные поля перед выполнением соединения ('').Есть ли (лучший) способ проверить размер полного документа в правиле?

- edit -

Прокомментируйте «что вы имеете в виду» и «что вы делаете»клиент ":

Я хотел бы получить контроль над объемом добавляемых данных (главным образом во избежание злонамеренного неправильного использования).Насколько я знаю, у Firestore нет какой-то настройки газа для этого.Работа с триггерными функциями и механизмом времени была опцией.Но для моего случая это не должно быть очень точным, поэтому я выбрал барьер с помощью некоторого максимального размера документа, который может быть добавлен за один раз.Из-за ограничений на количество документов, которые могут быть добавлены в течение определенного периода времени, это, по крайней мере, создаст некоторые трудности при попытке заполнения БД.Поэтому для этого мне нужно условное правило «создать», которое разрешает только документы размером меньше x.И это не должно быть очень точным, я оставляю место для некоторого дополнительного окружающего мета-контента.

Самый простой способ - это .join (''). Size () для определения приблизительного размерадокумент.Но если в документе есть нестроковое поле, это не будет работать.Теперь я должен явно выписать все поля.Это грязно и не удобно для обслуживания.

Я не мог найти более простой или лучший способ, поэтому мой вопрос «есть ли лучший способ, возможно, я не подумал», чтобы определить размерпроизвольный документ в условии правила.

...