Проверьте, является ли request.resource.data списком строк в Firebase Firestore - PullRequest
0 голосов
/ 01 июня 2019

Как проверить, имеет ли поле тип string[] в правилах пожарного депо?

У меня есть поле tags в документе, которое должно быть списком строк, и я хочу применитьтот.Обычно я могу сказать request.resource.data is int, если я хочу увидеть, является ли поле int, но я не могу найти эквивалент для lists.

Спасибо!

1 Ответ

1 голос
/ 01 июня 2019

Нет явной проверки типа в языке правил (по крайней мере, насколько я знаю).Поэтому лучшее, что я могу придумать, - это попытаться найти способ различать List (тип массива) и другие типы.

Например, в списке есть метод join(), который можно использовать для объединения значений из списка в одну строку.Поскольку (насколько я вижу) ни один из других типов не имеет этой операции, эта проверка может обнаружить массив:

allow write: if request.resource.data.categories.join(",") != "";

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

Для справки в будущем: тестовый код здесь .

...