2017-10-25 1 views
0

Ich versuche, ein beliebiges Benutzertransaktionsprotokoll zu speichern. Wenn beispielsweise ein Benutzer etwas erstellt, aktualisiert oder löscht, wird sein Protokoll unter "Transaktionen" gespeichert.Firebase-Sicherheitsregel (.write)

Ich habe Schwierigkeiten, Sicherheitsregeln (.write) zu diesem Problem zu schreiben.

Zum Beispiel; Wenn ein Benutzer namens (userKey2) aktualisiert Benutzerdaten genannt (userKey1) wie folgt:

{ "Users" 
    {"userKey1": 
     { "Name":"Mike", 
     "Age":"18", 
     "Location":"Sydney" } 
    } 
} 

ich hinzufügen, es auch zu „Transaktionen“

{ "Transactions" : 
    { "Key" : 
     { "Object" : "Users", 
     "DateTime: "2017-10-25 10:00:00", 
     "ObjectKey" : "userKey1", 
     "Type" : "Update", 
     "Who" : "userKey2" 
     } 
    } 
} 

ich Update-Befehl senden zusammen Feuerbasis. (Für "Benutzer" und "Transaktionen"), um sicherzustellen, dass sie alle oder keine aktualisiert werden.

Wie kann ich (.write) Sicherheitsregel für "Transaktionen" machen? Weil ich verhindern will, dass Daten in "Transactions" eingegeben werden, ohne dass "Object" und "ObjectKey" wirklich in der "Users" -Ansammlung vorhanden sind.

Aber in meinem Beispiel existiert noch keiner von ihnen (sie sind beide neue Daten in verschiedenen Sammlungen), also kann ich es nicht in "Benutzer" Sammlung überprüfen.

Antwort

0

Sie könnten die Verwendung von Firebase-Datenbank-Triggern in Erwägung ziehen, um diese Funktion zu implementieren. Die clientseitige App würde nur auf den Knoten "Benutzer" schreiben. Sie könnten einen Trigger erstellen, der bei jeder Aktualisierung von Daten unter dem Knoten "Benutzer" ausgelöst wird. Dieser Trigger könnte den zusätzlichen Eintrag zum Knoten "Transaktionen" schreiben.

Der Trigger-Ansatz garantiert, dass Sie nur Daten in Transaktionen schreiben, die wirklich unter Benutzer vorhanden sind. Der Trigger wird nur ausgelöst, wenn Daten unter Benutzer hinzugefügt werden.

Da der Trigger zum Schreiben in Transaktionen mit Administratorrechten ausgeführt wird, müssen Sie dem Transaktionsknoten keinen Schreibzugriff für den Endbenutzer erteilen.

Here is the documentation on Firebase triggers.

+0

Ja, ich habe die Dokumente überprüft. Genau das habe ich gesucht. Vielen Dank. –