2016-08-01 16 views
1

Ich verwende Firebase & iOS und versuche zu validieren, wenn ein Benutzer versucht, einen Kommentar zu senden.Firebase-Validierungsregel funktioniert nicht

Hier sind meine Regeln:

{ 
    "rules": { 
    "comments": { 
     ".read": true, 
     ".write": "auth.uid != null", 
     "$comment_id": { 
     ".validate": "newData.isString() && newData.val().length < 100" 
     } 
    } 
    } 
} 

Hier ist meine Datenbankstruktur: enter image description here

Der Kommentar, die erfolgreich gebucht wurde war, als ich den Teil ".validate" gelöscht. Ich habe auch versucht ".validate": "newData.isString() && newData.val().length < 100" außerhalb der $comment_id Block setzen, aber dies führte immer noch zu einem Fehler.

Egal, bekomme ich diesen Fehler aus dem Simulator, wenn ich versuche, um einen Kommentar hinzuzufügen: enter image description here

Warum ist nicht ".validate" zu arbeiten? Was vermisse ich?

Antwort

1

Ihr Datenpfad ist /comments/$comment_id/comment. Ihre Validierungsregel berücksichtigt nicht die letzte comment darin.

{ 
    "rules": { 
    "comments": { 
     ".read": true, 
     ".write": "auth.uid != null", 
     "$comment_id": { 
     "comment": { 
      ".validate": "newData.isString() && newData.val().length < 100" 
     } 
     } 
    } 
    } 
} 

Diese Regeln funktionieren. Aber ich würde wahrscheinlich die Datenstruktur aktualisieren, um den Knoten comment zu entfernen, da er keinen Wert hinzufügt.

Verwandte Themen