Идентификатор соответствия в правилах базы данных firestore - PullRequest
1 голос
/ 04 августа 2020

Я работаю над своими правилами безопасности, но когда я пытаюсь сопоставить идентификатор документа с регулярным выражением, это не работает. Я попытался использовать функцию matches, но она, похоже, не принимает метод.

Даже когда я пытался использовать шаблон Firebase YYYY-MM-DD (/^(19|20)[0-9][0-9][-\\/. ](0[1-9]|1[012])[-\\/. ](0[1-9]|[12][0-9]|3[01])$/) из здесь , но не сработало (пробовал с 1950-01-01).

enter image description here

I am trying to check roomId for this pattern (/^(\\d){6,}#[a-zA-Z0-9]{65,}$/)

Edit: I tried removing the " " around the regex but it gives me this error: mismatched input ')' expecting {'{', '/', PATH_SEGMENT}

введите описание изображения здесь

(я знаю, что с регулярным выражением все в порядке, но я не знаю, почему оно не будет работать в написанном мной коде)

1 Ответ

2 голосов
/ 04 августа 2020

Вы перепутали синтаксис между Realtime Database и Firestore.

В правилах безопасности Realtime Database регулярное выражение c указано как JavaScript регулярное выражение, поэтому оно заключено в / для открытия и закрытия.

В правилах безопасности Firestore регулярное выражение необходимо передавать в виде строки, что также означает, что оно не должно быть заключено в символы /.

Итак:

allow create: if docId.matches("^(19|20)[0-9][0-9][-\\/. ](0[1-9]|1[012])[-\\/. ](0[1-9]|[12][0-9]|3[01])$");

введите описание изображения здесь

...