NextJS-Backend/Datenbank?

2 Antworten

(...) und Auth0 kann auch nicht mehr, als nur ein sicheres Loginsystem bieten.

In Auth0 können ebenso profilbezogene Daten (user_metadata) gespeichert werden.

Also müsste ich die SQL-Datenbank wie immer anlegen und (...)

Wenn du die Nutzerdaten in einer eigenen Datenbank ablegen möchtest: Ja. Eine Tabelle mit zwei Spalten dürfte ausreichen. Eine Spalte beinhaltet eine Nutzer-ID/E-Mail (= Primärschlüssel), die zweite die aktuellen Erfahrungspunkte.

Die sid von Auth0 wäre allerdings nicht als Nutzer-ID geeignet, denn die beschreibt die aktuelle Session-ID. Sie ist also nicht persistent, sondern ändert sich mit jeder neuen Authentifizierung. Nimm stattdessen die user_id oder (sofern die in deinem Fall eindeutig ist) die E-Mail-Adresse.

(...) Vercel liefert soweit ich weiß keine Datenbank, wo ich Nutzerdaten hinschicken kann (...)

Vercel bietet verschiedene Formen der Datenspeicherung. Das Angebot inkludiert eine Postgres-Datenbank, die du auch im Hobby-Plan nutzen kannst.

(...) aber da ich in NextJS neu bin, wollte ich wissen, wie das da abläuft.

Wie in PHP, kannst du auch mit unterschiedlichen DBMS kommunizieren. Schau auf NPM, dort findest du passende Client-Bibliotheken.

Zum Beispiel:

Wenn du explizit phpMyAdmin weiterverwenden möchtest, musst du es entsprechend einrichten (Webserver mit PHP-Konfiguration, phpMyAdmin installieren und konfigurieren). In einer Webhosting-Umgebung, in der die entsprechenden Zugriffsrechte fehlen, klappt das natürlich nicht so gut. Du könntest dir das alles auf dem eigenen Rechner einrichten und später einen Dump auf das gehostete System ziehen.

Ich weiß, dass MongoDB beliebt ist, aber das ist doch auch wieder extern irgendwo und kostet Geld und ist nicht auf einem "Standard" Webhosting inklusive, wie PHP/SQL-Datenbank.
  • MongoDB ist frei/kostenlos nutzbar
  • MongoDB kann selbst oder in einer Cloud gehostet werden

Lies dazu hier.

Node.js + MongoDB könntest du bei Heroku oder NodeChef hosten. Andernfalls eignen sich Cloud Hosting-Anbieter wie AWS, Azure, Digital Ocean, usw. ... oder du holst dir einen vServer (z.B. bei IONOS, netcup, Strato, o.ä.) und richtest dir auf dem alles Notwendige selbst ein. Das keine dieser Lösungen kostenlos ist, sollte verständlich sein.

Wie benutzt man MongoDB (...)?

Schau in die Dokumentation.

(...) und ist das sinnvoll?

Wir reden in deinem Fall von keiner komplexen oder außergewöhnlichen Struktur, die zur Verwaltung komplizierter Operationen (Joins, o.ä.) bedarf. Du hast nur eine einfache Liste an Schlüsselwertpaaren, die in beiden Datenbanksystemen problemlos abgebildet werden kann.

Worüber man sich wenn eher Gedanken machen müsste, wäre die Update-Strategie, wobei auch das erst wirklich relevant werden sollte, wenn permanent tausende Anfragen in der Minute bearbeitet werden müssen. Belies dich für so einen Fall zu Load Balancing/Skalierung und schau außerdem, ob du nicht schon über eine geänderte Programmlogik für Entlastung sorgen kannst.

Irgendwelche Highscore-Tabellen/Rankingsysteme, o.ä. berechnet man am besten über einen separaten Job in bestimmten Zeitintervallen (z.B. an jedem Tag um 1 Uhr).

Von Firebase habe ich gehört, (...)

Auch zu Firebase gibt es eine offizielle Dokumentation.

MongoDB reicht da völlig aus, da gibt es ja eine gratis Version mit gut 500MB Speicher, das reicht für so ein kleines Projekt komplett. Ist auch online in der Cloud gehosted, musst dir im Dashboard auf der Website die Daten anlegen.

Bei NextJS würdest du dich da einfach in einer helper-Datei verbinden, nachdem du die jeweiligen Models für die Daten erstellt hast und innerhalb des `/api` Ordners die API calls machst.

Woher ich das weiß:Hobby – C++ & Co. seit '05