2016-11-20 5 views
0

У меня возникла странная ошибка после введения некоторых правил .validate в мою базу данных, я начал получать разрешение, которое было отклонено, когда я пытаюсь отправить данные с устройства Android.Данные не соответствуют правилам .validate Firebase

Правило очень простое:

"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. Приветствия! –