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 Ordnerbase44/entities/ im Projekt-Root abgelegt werden. Jede Entität wird in einer eigenen .jsonc-Datei definiert.
Beispielstruktur:
So erstellst du eine Entität
- Erstelle eine neue
.jsonc-Datei im Verzeichnisbase44/entities/ - Definiere dein Entitätsschema nach der Struktur unten
- 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 einemschema-Objekt:
type und properties auf oberster Ebene:
Unterstützte Feldtypen
String
Einfaches Textfeld: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
- Muss dem Muster entsprechen:
- 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 Feldrls 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:true— Alle Benutzer erlauben (einschließlich anonym/nicht authentifiziert)false— Alle Benutzer blockieren- 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:user_condition:
user_conditionunterstü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,$norstehen zum Kombinieren von Bedingungen zur Verfügung
RLS-Beispiele
Nur-Besitzer-Zugriff:Häufige RLS-Muster
Öffentliches Erstellen, nur-Admin-Verwaltung (z. B. Kontaktformulare, Warteliste):Einschränkungen
- user_condition nur Gleichheit:
user_conditionunterstützt nur exakte Übereinstimmung (z. B.{ "role": "admin" }) — keine Operatoren - Keine Vergleichsoperatoren bei user_condition:
$gt,$lt,$regex,$expr,$wherewerden bei User-Bedingungen NICHT unterstützt - Keine tief verschachtelten Templates: Templates wie
{{user.data.profile.department}}funktionieren möglicherweise nicht
- Logische Operatoren:
$or,$and,$norzum 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 })
Komplexe Zugriffsmuster
Für komplexe Zugriffsmuster, die mehrere Bedingungen erfordern (z. B. “Besitzer ODER Admin”), hast du zwei Möglichkeiten:- Base44-Dashboard-UI verwenden — Das Dashboard erlaubt das Hinzufügen mehrerer Regeln pro Operation mit ODER-Logik
- Separate Entitäten verwenden — Daten in mehrere Entitäten mit unterschiedlichen Zugriffsregeln aufteilen
- 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 Propertyrls definiert.
FLS-Operationen
FLS unterstützt dieselben Operationen wie RLS auf Entitätsebene:FLS-Beispiel
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 Befehlentities push pusht alle Entitäten, die im Ordner base44/entities existieren.
Diese Seite wurde mit KI übersetzt. Für die genauesten und aktuellsten Informationen siehe die englische Version.