1

Ich möchte Firebase-Funktionen verwenden, um Firebase-Regeln zu testen, die ich definiert habe.Cloud-Funktionen für Firebase: Wie liest/schreibt man als existierender Benutzer in die Datenbank?

Ich möchte lesen/schreiben in Echtzeit-Datenbank als vorhandener Benutzer zu testen, ob die Regeln wie erwartet funktionieren.

ich in getting started page lesen, kann ich zu Echtzeit-Datenbank als Server-Betreiber wie folgt schreiben: admin.database().ref('/messages').push({original: 'some text'});

Wie kann ich das gleiche wie ein Benutzer kann ich in Feuerbasis erstellt haben und nicht als Administrator?

+0

Welche Art von Funktion schreiben Sie? Ein Datenbank-Trigger? –

+0

Hallo Doug, ich möchte eine Http-Funktion schreiben; Die Funktion schreibt in Realtime Database als Benutzer, den ich bereits erstellt habe. Basierend auf dem Rückgabeergebnis kann ich herausfinden, ob die von mir definierte Regel korrekt ist. –

Antwort

2

Ich glaube, wenn Sie die Delta Snapshot aus dem ausgelösten Ereignis erhalten, dass der aktuelle Status des Snapshots an den Benutzer gebunden ist. Da das Firebase-Team Ihnen die serverlose Umgebung zur Verfügung stellt, fügen sie auch den Administrator hinzu, da sich dieser an einem sicheren Ort befindet.

So nur die ref aus dem aktuellen Snapshot greifen, sollten Sie die Möglichkeit geben, die Datenbankregeln zu testen. Nur um zu verdeutlichen, ich spreche über die snapshot.ref, und nicht die snapshot.adminRef. Hier

ist der Verweis von ihren documentation:

Gibt einen Verweis auf die Datenbank Ort, an dem das auslösende Schreib aufgetreten. Diese Referenz verfügt über dieselben Endbenutzerberechtigungen wie der Client, der den Schreibvorgang ausgeführt hat. Wenn also ein nicht authentifizierter Client den Schreibvorgang ausgeführt hat, ist diese Referenz nicht authentifiziert. Wenn der Client, der den Schreibvorgang ausgeführt hat, als ein bestimmter Firebase Auth-Benutzer authentifiziert wird, wird diese Referenz als derselbe Benutzer authentifiziert.

+0

Danke JamWils. Ich möchte in der Lage sein, in Realtime Database als einen vorhandenen Benutzer zu schreiben, den ich erstellt habe. Dann kann ich aus dem zurückgegebenen Ergebnis (dem Callback/Versprechen) herausfinden, ob die von mir definierte Sicherheitsregel funktioniert. –

+0

Ja, den ** Delta Snapshot ** des Ereignisses zu verwenden und diese Referenz zu erfassen, sollte die Erlaubnis des Benutzers haben. Darauf bezog ich mich, als ich 'snapshot.ref' schrieb. Im Falle des Ereignisses, das hereinkommt, denke ich, dass Sie nach 'event.data.ref' suchen. – JamWils

Verwandte Themen