2016-11-20 45 views
0

在我的數據庫中引入了一些.validate規則後,我得到了一個奇怪的錯誤,每當我嘗試從Android設備發送數據時,我開始獲取權限被拒絕。數據無法通過Firebase的.validate規則

規則很簡單:

"rules": { 
    "reportsToAdd": { 
     ".read": "auth != null", 
     ".write": "auth != null", 
     ".validate": "newData.hasChildren(['displayName', 'title', 'description', 'lat', 'lng', 'imageLinks', 'uid', 'isNotified'])" 
    } 
} 

只是檢查是否有對象的下列屬性。

與此同時,在Android設備我有以下的模型類

public class Report implements Serializable { 
public String displayName; 
public String title; 
public String description; 
public String uid; 
public double lat; 
public double lng; 
public List<String> imageLinks; 
public boolean isNotified = false; 

public Report() { } 
} 

邏輯發送報告:

FirebaseDatabase database = FirebaseDatabase.getInstance(); 
DatabaseReference myRef = database.getReference("reportsToAdd"); 
myRef.push().setValue(report, new DatabaseReference.CompletionListener() { ... }); 

當.validate規則被刪除,一切正常,所以它不是身份驗證問題,它只是驗證,我現在檢查了幾次錯誤,發送時所有屬性都不爲空。我不認爲它應該是Serializable接口引起的問題,因爲它只是一個接口。

完整的錯誤:com.google.firebase.database.DatabaseException: Firebase Database error: Permission denied

回答

2

我認爲你不應該在此目錄中驗證/ reportsToadd/ 因爲你上傳到中/ reportsToadd/randomstring /帶推()。

"rules": { 
    "reportsToAdd": { 
      "$id":{ 
       ".read": "auth != null", 
       ".write": "auth != null", 
       ".validate": "newData.hasChildren(['displayName', 'title', 'description', 'lat', 'lng', 'imageLinks', 'uid', 'isNotified'])" 
       } 
    } 
} 
+0

這就是我錯過的,對於Firebase來說相當新穎。 乾杯! –

相關問題