2016-08-12 108 views
4

這是我的規則,適用於IMG目錄:火力地堡儲藏後的規則適用於刪除規則

match /img { 
    match /{fileId} { 
    allow read, 
      write: if request.resource.contentType.matches('image/jpeg') 
       || request.resource.contentType.matches('image/png') 
       || request.resource.contentType.matches('image/gif') 
       && request.resource.size < 2 * 1024 * 1024 
    } 
    } 
} 

的問題是,這些規則也被應用到刪除(),因爲它是一個寫方法太,所以它總是返回一個權限錯誤。我在文檔中找不到關於此的任何內容。我如何推遲POST/PUT規則和DELETE規則?

回答

11

自己找到解決方案。通過在沒有資源發送(刪除)的情況下應用規則,它也獲得寫入權限。其餘的創建/更新代碼被髮送到OR表達式。

match /img { 
    match /{fileId} { 
     allow read, 
     write: if request.resource == null || 
      (request.resource.contentType.matches('image/jpeg') 
      || request.resource.contentType.matches('image/png') 
      || request.resource.contentType.matches('image/gif') 
      && request.resource.size < 2 * 1024 * 1024) 
    } 
} 
+0

棒極了!這應該在Firebase文檔中。 – drdrdrdr