2017-07-03 52 views
0

我试图遵循火力地堡安全规则的云存储参考布局的例子:我复制&火力地堡安全规则的云存储拆分()示例错误

https://firebase.google.com/docs/reference/security/storage/

粘贴的例子split()进入我的存储规则,它不会编译/让我保存:

根据提供的正则表达式拆分字符串并返回字符串列表。使用Google RE2语法。

// Allow files named "file.*" to be uploaded 
match /{fileName} { 
    allow write: if fileName.split('.*\..*')[0] == 'file' 
} 

的错误,我得到: Unexpected '.'.

对于我的生活,我不能提供运行示例代码,我也不能进行更改,并获得正则表达式按预期工作。

任何人对Allow files named "file.*" to be uploaded有什么建议?

回答

2

规则中似乎没有\。试试这个:

// Allow files named "file.*" to be uploaded 
match /{fileName} { 
    allow write: if fileName.split('.*\\..*')[0] == 'file' 
} 

通常,当使用正则表达式时,反斜杠是首先要检查的东西。不同的系统使用反斜杠进行转义,有时(例如这里)则需要加倍转义。

+1

弗兰克,谢谢你的快速回复。你的正则表达式split('。* \\ .. *')[0]'的例子对我来说仍然不起作用,但是你对双重转义的评论让我走上了正确的道路。似乎你会'split('\\。')[0]'来得到实际的文件名,这对我来说很有用。我是否错过了一些东西,或者是关于文档中的示例?在更改后立即进行测试时,我也得到了错误的否定结果,似乎规则传播延迟到达节点或删除某些缓存? – briannyc

+1

@briannyc:你对延迟的观察是正确的。在[安全规则指南](https://firebase.google.com/docs/storage/security/start#edit_rules)中提到:_规则会立即上传到云存储服务器,但最多可能需要五分钟才能变为live_ 。 –