Diese Beitragsserie ist auf NgateSystems.com indiziert. Dort finden Sie auch eine äußerst nützliche Stichwortsuchfunktion.
Letzte Bewertung: 24. November
In dieser Serie wurde zuvor beschrieben, wie Sie das Svelte-Framework in Verbindung mit der Firestore-Datenbank-Client-API von Google verwenden können, um schnell und unterhaltsam nützliche Informationssysteme zu entwickeln. Leider hat Beitrag 3.3 jedoch gezeigt, dass das ansonsten hervorragende Authentifizierungssystem von Firebase keine Firestore-Aktivitäten in serverseitigen Load()- und Actions()-Funktionen unterstützt, bei denen Datenbankregeln auf das Authentifizierungsobjekt verweisen.
Das Überspringen Ihrer Firestore-Autorisierungsregeln ist keine Option – ohne diese ist Ihre Datenbank für jeden offen, der die FirebaseConfig-Schlüssel aus Ihrer Webanwendung kapern kann. In diesem Beitrag werden Möglichkeiten beschrieben, den serverseitigen Svelte-Code so zu überarbeiten, dass er auf der Clientseite ausgeführt wird, während die Firestore-Regeln fest in Kraft bleiben.
Nicht alle Load()-Funktionen sind vom Vorhandensein von Firestore-Regeln betroffen. Diejenigen, die auf Firestore-öffentliche-Sammlungen verweisen, werden weiterhin problemlos serverseitig ausgeführt. Die Client-API ist weiterhin in den page.server.js-Dateien verfügbar – sie funktioniert jedoch nicht, wenn sie aufgefordert wird, durch Authentifizierung geschützte Sammlungen zu verwenden.
Wenn Ihre Load()-Funktion öffentliche Dateien adressiert und Sie einfach serverseitiges Debuggen vermeiden möchten, können Sie Ihre Load()-Funktion in eine page.js-Datei verschieben. Dies funktioniert genau wie eine page.server.js-Datei – Svelte führt die Funktion weiterhin automatisch beim Laden aus. Dies geschieht jedoch jetzt clientseitig, wo es im Browser debuggt werden kann. Weitere Informationen finden Sie in der Svelte-Dokumentation unter „Laden von Daten“
Allerdings muss eine „kompromittierte“ Load()-Funktion (in der Regel dort, wo Firestore-Regeln verwendet werden, um sicherzustellen, dass Benutzer nur auf ihre eigenen Daten zugreifen können) in clientseitigen Code verlagert werden. Typischerweise wird dies in eine neue, entsprechend benannte Funktion im