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
| Entitätsname | Dateiname |
|---|---|
Task | task.jsonc |
TeamMember | team-member.jsonc |
ActivityLog | activity-log.jsonc |
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
| Eigenschaft | Beschreibung |
|---|---|
type | Datentyp: string, number, integer, boolean, array, object, binary |
description | Menschenlesbare Beschreibung des Feldes |
enum | Array erlaubter Werte (für Strings) |
enumNames | Menschenlesbare Labels für Enum-Werte (gleiche Reihenfolge wie enum) |
default | Standardwert, wenn nicht angegeben |
format | Formathinweis: date, date-time, time, email, uri, hostname, ipv4, ipv6, uuid, file, regex, richtext |
items | Schema für Array-Elemente |
properties | Verschachtelte Properties für Objekt-Typen |
$ref | Referenz auf eine andere Schema-Definition |
minLength | Minimale String-Länge |
maxLength | Maximale String-Länge |
pattern | Regex-Muster für String-Validierung |
minimum | Minimalwert für Zahlen |
maximum | Maximalwert für Zahlen |
rls | Field-Level-Security-Regeln (siehe Abschnitt Field Level Security) |
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:| Operation | Beschreibung |
|---|---|
create | Steuert, wer neue Datensätze hinzufügen kann |
read | Steuert, wer Datensätze ansehen kann |
update | Steuert, wer Datensätze ändern kann |
delete | Steuert, wer Datensätze entfernen kann |
write | Kurzform für create, update und delete zusammen |
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:| Template | Beschreibung |
|---|---|
{{user.id}} | Die ID des Benutzers |
{{user.email}} | Die E-Mail des Benutzers |
{{user.role}} | Die Rolle des Benutzers |
{{user.data.field_name}} | Benutzerdefiniertes Feld aus dem data-Objekt des Benutzers |
Eingebaute Entitätsattribute
Jeder Entitätsdatensatz hat diese eingebauten Attribute, die für RLS-Regeln verfügbar sind:| Attribut | Beschreibung |
|---|---|
id | Eindeutiger Datensatz-Identifikator |
created_date | Zeitstempel der Erstellung des Datensatzes |
updated_date | Zeitstempel der letzten Aktualisierung des Datensatzes |
created_by | E-Mail des Benutzers, der den Datensatz erstellt hat |
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:| Operation | Beschreibung |
|---|---|
create | Steuert, wer dieses Feld beim Erstellen von Datensätzen setzen darf |
read | Steuert, wer dieses Feld ansehen darf |
update | Steuert, wer dieses Feld ändern darf |
delete | Steuert, wer dieses Feld leeren darf |
write | Kurzform für create, update und delete zusammen |
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.

