2016-06-01 1 views
0

Um Regeln für neue Daten hinzuzufügen, verwende ich .validate und newData. Diese Regel funktioniert, wenn ich neue Daten hinzufüge. Wenn ich jedoch Daten am vorhandenen Standort aktualisiere, funktionieren die Regeln nicht. Bitte helfen. Unten ist der Regelsatz:Wie füge ich Firebase-Regeln für die Aktualisierung von Daten hinzu?

{ 
    "rules": { 
    ".read": true, 
    ".write": true, 
    "User":{".validate":"newData.child('weight').isNumber() && newData.child('weight').val()>=1 && newData.child('weight').val()<=300"} 
    } 
} 
+0

Hier: https://firebase.google.com/docs/database/security/ lesen Sie die .write Regeln. Wenn Sie weitere Informationen bereitstellen könnten, könnte vielleicht jemand helfen. – praneybehl

+0

Veröffentlichen Sie Ihre Regeln –

+0

Würde es Ihnen etwas ausmachen, die Daten und den Standort anzugeben, den Sie aktualisieren möchten? – praneybehl

Antwort

0

Sie sollten die folgende

{ 
    "rules": { 
    ".read": true, 
    ".write": true, 
    "User":{ 
      "width" : { 
       ".validate":"newData.child('weight').isNumber() && newData.child('weight').val()>=1 && newData.child('weight').val()<=300", 
      }, 
      "$other" : { 
       ".validate":false 
       } 
      } 
    } 
} 

tun, wenn wir in der Dokumentation suchen

https://firebase.google.com/docs/database/security/securing-data#existing_data_vs_new_data

Die vordefinierten Datenvariable verwendet wird, beziehen sich auf die Daten, bevor eine Schreiboperation stattfindet. Umgekehrt enthält die Variable newData die neuen Daten, die existieren, wenn die Schreiboperation erfolgreich ist. newData steht für das zusammengeführte Ergebnis der neuen Daten, die geschrieben werden, und der vorhandenen Daten.

wenn es bereits registrierten Daten

{ 
    "width" : 50 
} 

newData

{ 
    "height" : 100 
} 

tatsächlich newData [data fusionierte]

{ 
    "width" : 50, 
    "height" : 100 
} 

".validate" funktioniert nicht für dieser Grund

Entschuldigung für Englisch

Verwandte Themen