我正在编写一条规则,以允许向结构如下的My_Collection创建新文档:
field1="value-1"
field2="value-2"
field3="other-miscellaneous-values"
仅在Side_Collection中没有使用以下格式的文档ID的文档时,才应允许这样做:
value-1:value-2
其中“ value-1”来自文档字段“ field1”,“ value-2”来自“ field2”,并用冒号分隔。
这是我要尝试的规则:
allow create: if !exists(/{database}/Side_Collection/{request.resource.data.field1}:{request.resource.data.field2});
这是我收到的错误消息:
Error saving rules - Line 24: Unexpected '}'.; Line 24: Missing 'match' keyword before path.; Line 24: Unexpected '.'.; Line 24: mismatched input 'request' expecting '}'; Line 24: Unexpected ':'.; Line 24: Unexpected ')'.; Line 30: Unexpected 'match'.
我尝试了以上几种方法,但没有任何效果。
答案 0 :(得分:1)
如果要在路径构造中插入一些变量值或表达式,则必须使用$()
来隔离该表达式。 accessing other documents的文档中对此进行了讨论。
在您的情况下,您可能希望像这样构建传递给exist()的路径(为方便阅读,我添加了回车符,您将希望删除它们):
exists(
/databases
/$(database)
/documents
/Side_Collection
/$(request.resource.data.field1 + ":" + request.resource.data.field2);