Skip to main content
Diese Seite ist Teil eines KI-Coding-Agent-Skills und für Agenten geschrieben, nicht für Menschen. Für die menschenlesbare Base44-Dokumentation siehe die Entwicklerdokumentation.

Entitäten erstellen

Base44-Entitäten werden lokal in deinem Projekt definiert und dann zum Base44-Backend gepusht.

Kritisch: Dateibenennung

Entitätsdateien MÜSSEN kebab-case-Benennung verwenden: {kebab-case-name}.jsonc FALSCH: TeamMember.jsonc, teamMember.jsonc RICHTIG: team-member.jsonc

Inhaltsverzeichnis

Entitätsverzeichnis

Alle Entitätsdefinitionen müssen im Ordner base44/entities/ im Projekt-Root abgelegt werden. Jede Entität wird in einer eigenen .jsonc-Datei definiert. Beispielstruktur:

So erstellst du eine Entität

  1. Erstelle eine neue .jsonc-Datei im Verzeichnis base44/entities/
  2. Definiere dein Entitätsschema nach der Struktur unten
  3. Pushe die Änderungen mit der CLI zu Base44

Struktur des Entitätsschemas

Jede Entitätsdatei folgt einer JSON-Schema-ähnlichen Struktur:

Häufiger Fehler: Verschachteltes Schema-Property

FALSCH — Umschließe Properties NICHT in einem schema-Objekt:
RICHTIG — Platziere type und properties auf oberster Ebene:
Das ist ein häufiger Fehler, der beim Pushen von Entitäten den Fehler “Invalid schema: Schema must have a ‘type’ field” auslöst.

Unterstützte Feldtypen

String

Einfaches Textfeld:
Mit Format:
Verfügbare Formate: date, date-time, time, email, uri, hostname, ipv4, ipv6, uuid, file, regex, richtext

String mit Enum

Auf bestimmte Werte beschränkt:

Number

Integer

Nur für ganze Zahlen:

Binary

Für Datei- oder Blob-Daten:

Boolean

Array von Strings

Array von Objekten

Feldeigenschaften

Vollständiges Beispiel

Hier eine vollständige Entitätsdefinition für eine Task:

Benennungskonventionen

  • Entitätsname: Verwende PascalCase mit nur alphanumerischen Zeichen (z. B. Task, TeamMember, ActivityLog)
    • Muss dem Muster entsprechen: /^[a-zA-Z0-9]+$/
    • Gültig: Task, TeamMember, Order123
    • Ungültig: Team_Member, Team-Member, Team Member
  • Dateiname: Verwende kebab-case passend zur Entität (z. B. task.jsonc, team-member.jsonc, activity-log.jsonc)
  • Feldnamen: Verwende snake_case (z. B. board_id, user_email, due_date)

Beziehungen zwischen Entitäten

Um Beziehungen zwischen Entitäten zu erstellen, verwende ID-Referenzfelder:

Row Level Security (RLS)

Row Level Security (RLS) steuert, welche Datensätze Benutzer basierend auf ihrer Identität und ihren Attributen zugreifen können. RLS-Regeln werden pro Entität im Feld rls des Schemas definiert. Wichtig: Wenn kein RLS definiert ist, sind alle Datensätze für alle Benutzer zugänglich.

RLS-Operationen

RLS unterstützt fünf Operationen:

Berechtigungswerte

Jede Operation akzeptiert einen der folgenden Werte:
  1. true — Alle Benutzer erlauben (einschließlich anonym/nicht authentifiziert)
  2. false — Alle Benutzer blockieren
  3. Bedingungsobjekt — Benutzer erlauben, die der Bedingung entsprechen

Template-Variablen

Verwende Template-Variablen, um auf Attribute des aktuellen Benutzers zu verweisen:

Eingebaute Entitätsattribute

Jeder Entitätsdatensatz hat diese eingebauten Attribute, die für RLS-Regeln verfügbar sind:

Regeltypen

Es gibt zwei Bedingungstypen, die du verwenden kannst: 1. Entitäts-zu-Benutzer-Vergleich — Vergleiche Datensatzfelder mit Werten des aktuellen Benutzers:
2. Benutzerbedingungsprüfung — Prüfe Benutzereigenschaften direkt mit user_condition:
Wichtige Hinweise:
  • user_condition unterstützt nur einfache Gleichheit (z. B. { "role": "admin" })
  • Entitäts-Feldfilterung erfordert data.-Präfix: Verwende { "data.fieldname": value }, um nach Entitätsfeldwerten zu filtern
  • Für data.*-Feldvergleiche kannst du Operatoren verwenden: $in, $nin, $ne, $all
  • Logische Operatoren $or, $and, $nor stehen zum Kombinieren von Bedingungen zur Verfügung
⚠️ Für fortgeschrittene RLS-Muster und Beispiele siehe rls-examples.md

RLS-Beispiele

Nur-Besitzer-Zugriff:
Abteilungsbasierter Zugriff:
Nur-Admin-Zugriff:
Vollständige RLS-Konfiguration:

Häufige RLS-Muster

Öffentliches Erstellen, nur-Admin-Verwaltung (z. B. Kontaktformulare, Warteliste):
Nur-Besitzer-Zugriff:
Nur eingeloggte Benutzer:

Einschränkungen

  • user_condition nur Gleichheit: user_condition unterstützt nur exakte Übereinstimmung (z. B. { "role": "admin" }) — keine Operatoren
  • Keine Vergleichsoperatoren bei user_condition: $gt, $lt, $regex, $expr, $where werden bei User-Bedingungen NICHT unterstützt
  • Keine tief verschachtelten Templates: Templates wie {{user.data.profile.department}} funktionieren möglicherweise nicht
Unterstützte Operatoren:
  • Logische Operatoren: $or, $and, $nor zum Kombinieren mehrerer Bedingungen
  • Feldoperatoren (nur für data.*-Felder): $in, $nin, $ne, $all
  • Entitäts-Feldfilterung: Verwende data.-Präfix, um nach Entitätsfeldwerten zu filtern (z. B. { "data.status": "published" } oder { "data.completed": true })
⚠️ Siehe rls-examples.md für umfassende RLS-Muster und Beispiele

Komplexe Zugriffsmuster

Für komplexe Zugriffsmuster, die mehrere Bedingungen erfordern (z. B. “Besitzer ODER Admin”), hast du zwei Möglichkeiten:
  1. Base44-Dashboard-UI verwenden — Das Dashboard erlaubt das Hinzufügen mehrerer Regeln pro Operation mit ODER-Logik
  2. Separate Entitäten verwenden — Daten in mehrere Entitäten mit unterschiedlichen Zugriffsregeln aufteilen
  3. Backend-Funktionen verwenden — Benutzerdefinierte Zugriffslogik in Backend-Funktionen implementieren

Field Level Security (FLS)

Field Level Security erlaubt dir, den Zugriff auf einzelne Felder innerhalb einer Entität zu steuern. FLS-Regeln werden im Schema jedes Felds über die Property rls definiert.

FLS-Operationen

FLS unterstützt dieselben Operationen wie RLS auf Entitätsebene:

FLS-Beispiel

In diesem Beispiel können nur Benutzer mit der Rolle hr das Feld salary lesen oder aktualisieren. Alle Benutzer mit Zugriff auf die Entität können andere Felder lesen/aktualisieren.

FLS-Hinweise

  • Wenn keine feldbasierte RLS definiert ist, erbt das Feld die Regeln auf Entitätsebene
  • FLS-Regeln folgen dem gleichen Bedingungsformat wie RLS auf Entitätsebene
  • Verwende FLS für sensible Felder wie Gehalt, SSN oder interne Notizen

Entitäten pushen

Der Befehl entities push pusht alle Entitäten, die im Ordner base44/entities existieren.
Weitere Details zum Push-Befehl siehe entities-push.md.
Diese Seite wurde mit KI übersetzt. Für die genauesten und aktuellsten Informationen siehe die englische Version.