2017-07-03 64 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_ 。 –