Zum Inhalt springen

MongoDB

@rebasepro/server-mongo implementiert Rebase’s BackendBootstrapper für MongoDB. Die REST-API, das generierte SDK, das Admin-Panel und die Auth-Oberfläche funktionieren alle darüber.

pnpm add @rebasepro/server-mongo
import { rebase } from "@rebasepro/server";
import { createMongoBootstrapper } from "@rebasepro/server-mongo";
rebase({
backend: createMongoBootstrapper({ url: process.env.DATABASE_URL! })
});

Setzen Sie DATABASE_URL auf einen MongoDB-Verbindungsstring (mongodb://… oder mongodb+srv://…).

Daten-API Der gesamte REST-Umfang: List, Get, Create, Update, Delete, Filter, Sortierung, Paginierung
Generiertes SDK Derselbe typisierte Client wie bei Postgres
Echtzeit Change Streams. Dies erfordert ein Replica Set – ein eigenständiger mongod hat kein Oplog zum Auslesen, daher ist Echtzeit dort stillschweigend nicht verfügbar
Historie Snapshot-basiert, in der gleichen Form wie bei Postgres
Auth Der gesamte Auth-Umfang, wobei die Repositories in MongoDB gespeichert werden
Admin-Panel Collections, Formulare, Relationen in der UI, Storage-Felder
  • Keine Row-Level Security. Siehe Warnung oben. Dies ist der entscheidende Punkt.
  • Keine SQL-Oberfläche. Der SQL-Editor von Studio, der RLS-Policy-Editor und pnpm rls:check sind Postgres-Funktionen und stehen nicht zur Verfügung.
  • Keine relationale Integrität. Eine Relation ist eine gespeicherte Referenz, die von der Anwendung aufgelöst wird; es gibt keinen Fremdschlüssel, sodass auf Datenbankebene nichts das Entstehen verwaister Referenzen verhindert.
  • Kein rebase db push / generate / migrate. MongoDB hat kein Schema zum Migrieren. Collections entstehen, sobald Dokumente geschrieben werden.

Wählen Sie MongoDB, wenn die Daten tatsächlich dokumentbasiert sind und das Autorisierungsmodell ohnehin in Ihrer Anwendung liegt. Wählen Sie PostgreSQL, wenn die Datenbank selbst durchsetzen soll, wer welche Zeile sieht – was das Argument ist, das Rebase an jeder anderen Stelle auf dieser Website vertritt.