Нет явной проверки типа в языке правил (по крайней мере, насколько я знаю).Поэтому лучшее, что я могу придумать, - это попытаться найти способ различать List
(тип массива) и другие типы.
Например, в списке есть метод join()
, который можно использовать для объединения значений из списка в одну строку.Поскольку (насколько я вижу) ни один из других типов не имеет этой операции, эта проверка может обнаружить массив:
allow write: if request.resource.data.categories.join(",") != "";
Любой непустой массив пройдет этот тест, в то время как пустые массивы и другие типыне удастся.В симуляторе это выдает довольно уродливое сообщение об ошибке, но оно преобразуется в обычное, общее «отказано в разрешении» при обращении к клиентам.
Для справки в будущем: тестовый код здесь .