首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用变量在安全规则中构建Firestore文档的路径

如何使用变量在安全规则中构建Firestore文档的路径
EN

Stack Overflow用户
提问于 2019-11-22 00:13:55
回答 1查看 531关注 0票数 0

我正在编写一条规则,允许在My_Collection中创建新文档,其结构如下:

代码语言:javascript
复制
field1="value-1"
field2="value-2"
field3="other-miscellaneous-values"

只有当Side_Collection中没有文档ID使用以下格式的文档时,才允许这样做:

代码语言:javascript
复制
value-1:value-2

其中"value-1“来自文档字段"field1","value-2”来自"field2",它们用冒号分隔。

以下是我正在尝试的规则:

代码语言:javascript
复制
allow create: if !exists(/{database}/Side_Collection/{request.resource.data.field1}:{request.resource.data.field2});

下面是我收到的那种错误消息:

代码语言:javascript
复制
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'. 

我尝试了上面的几个变体,但都不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-22 06:07:30

如果要在路径结构中插入一些变量值或表达式,则必须使用$()来隔离该表达式。accessing other documents的文档中对此进行了讨论。

在您的例子中,您可能希望像这样构建要传递给exists()的路径(为了可读性,我添加了回车,您可能希望删除它们):

代码语言:javascript
复制
exists(
  /databases
  /$(database)
  /documents
  /Side_Collection
  /$(request.resource.data.field1 + ":" + request.resource.data.field2);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58979250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档