Crear entidades
Las entidades de Base44 se definen localmente en tu proyecto y luego se envían al backend de Base44.Crítico: nomenclatura de archivos
Los archivos de entidad DEBEN usar nomenclatura kebab-case:{kebab-case-name}.jsonc
| Nombre de entidad | Nombre de archivo |
|---|---|
Task | task.jsonc |
TeamMember | team-member.jsonc |
ActivityLog | activity-log.jsonc |
TeamMember.jsonc, teamMember.jsonc
CORRECTO: team-member.jsonc
Directorio de entidades
Todas las definiciones de entidad deben colocarse en la carpetabase44/entities/ en la raíz de tu proyecto. Cada entidad se define en su propio archivo .jsonc.
Estructura de ejemplo:
Cómo crear una entidad
- Crea un nuevo archivo
.jsoncen el directoriobase44/entities/ - Define el esquema de tu entidad siguiendo la estructura a continuación
- Envía los cambios a Base44 usando la CLI
Estructura del esquema de entidad
Cada archivo de entidad sigue una estructura similar a JSON Schema:Error común: propiedad de esquema anidada
INCORRECTO - NO envuelvas las propiedades en un objetoschema:
type y properties en el nivel superior:
Tipos de campo admitidos
String
Campo de texto básico:date, date-time, time, email, uri, hostname, ipv4, ipv6, uuid, file, regex, richtext
String con Enum
Restringido a valores específicos:Number
Integer
Solo para números enteros:Binary
Para datos de archivo/blob:Boolean
Array de Strings
Array de objetos
Propiedades de campo
| Propiedad | Descripción |
|---|---|
type | Tipo de dato: string, number, integer, boolean, array, object, binary |
description | Descripción legible del campo |
enum | Array de valores permitidos (para strings) |
enumNames | Etiquetas legibles para valores de enum (mismo orden que enum) |
default | Valor predeterminado cuando no se proporciona |
format | Sugerencia de formato: date, date-time, time, email, uri, hostname, ipv4, ipv6, uuid, file, regex, richtext |
items | Esquema para elementos de array |
properties | Propiedades anidadas para tipos de objeto |
$ref | Referencia a otra definición de esquema |
minLength | Longitud mínima de string |
maxLength | Longitud máxima de string |
pattern | Patrón regex para validación de string |
minimum | Valor mínimo para números |
maximum | Valor máximo para números |
rls | Reglas de seguridad a nivel de campo (ver sección Seguridad a nivel de campo) |
Ejemplo completo
Aquí hay una definición completa de entidad para una Task:Convenciones de nomenclatura
- Nombre de entidad: Usa PascalCase solo con caracteres alfanuméricos (por ejemplo,
Task,TeamMember,ActivityLog)- Debe coincidir con el patrón:
/^[a-zA-Z0-9]+$/ - Válido:
Task,TeamMember,Order123 - Inválido:
Team_Member,Team-Member,Team Member
- Debe coincidir con el patrón:
- Nombre de archivo: Usa kebab-case coincidiendo con la entidad (por ejemplo,
task.jsonc,team-member.jsonc,activity-log.jsonc) - Nombres de campo: Usa snake_case (por ejemplo,
board_id,user_email,due_date)
Relaciones entre entidades
Para crear relaciones entre entidades, usa campos de referencia de ID:Seguridad a nivel de fila (RLS)
La seguridad a nivel de fila (RLS) controla qué registros pueden acceder los usuarios según su identidad y atributos. Las reglas RLS se definen por entidad dentro del camporls del esquema.
Importante: Si no se define RLS, todos los registros son accesibles para todos los usuarios.
Operaciones RLS
RLS admite cinco operaciones:| Operación | Descripción |
|---|---|
create | Controla quién puede añadir nuevos registros |
read | Controla quién puede ver registros |
update | Controla quién puede modificar registros |
delete | Controla quién puede eliminar registros |
write | Abreviatura para create, update y delete combinados |
Valores de permiso
Cada operación acepta uno de los siguientes valores:true- Permitir todos los usuarios (incluidos anónimos/no autenticados)false- Bloquear todos los usuarios- Objeto de condición - Permitir usuarios que coincidan con la condición
Variables de plantilla
Usa variables de plantilla para hacer referencia a los atributos del usuario actual:| Plantilla | Descripción |
|---|---|
{{user.id}} | El ID del usuario |
{{user.email}} | El correo del usuario |
{{user.role}} | El rol del usuario |
{{user.data.field_name}} | Campo personalizado del objeto data del usuario |
Atributos integrados de entidad
Cada registro de entidad tiene estos atributos integrados disponibles para reglas RLS:| Atributo | Descripción |
|---|---|
id | Identificador único del registro |
created_date | Marca de tiempo cuando se creó el registro |
updated_date | Marca de tiempo cuando se actualizó el registro por última vez |
created_by | Correo del usuario que creó el registro |
Tipos de regla
Hay dos tipos de condición que puedes usar: 1. Comparación de entidad a usuario - Compara campos de registro con los valores del usuario actual:user_condition:
user_conditionsolo admite igualdad simple (por ejemplo,{ "role": "admin" })- El filtrado de campo de entidad requiere el prefijo
data.: Usa{ "data.fieldname": value }para filtrar por valores de campo de entidad - Para comparaciones de campos
data.*, puedes usar operadores:$in,$nin,$ne,$all - Los operadores lógicos
$or,$and,$norestán disponibles para combinar condiciones
Ejemplos de RLS
Acceso solo del propietario:Patrones RLS comunes
Creación pública, gestión solo de administrador (por ejemplo, formularios de contacto, listas de espera):Limitaciones
- user_condition es solo igualdad:
user_conditionsolo admite coincidencia exacta (por ejemplo,{ "role": "admin" }) - sin operadores - Sin operadores de comparación en user_condition:
$gt,$lt,$regex,$expr,$whereNO están admitidos para condiciones de usuario - Sin plantillas profundamente anidadas: Las plantillas como
{{user.data.profile.department}}pueden no funcionar
- Operadores lógicos:
$or,$and,$norpara combinar múltiples condiciones - Operadores de campo (solo para campos
data.*):$in,$nin,$ne,$all - Filtrado de campo de entidad: Usa el prefijo
data.para filtrar por valores de campo de entidad (por ejemplo,{ "data.status": "published" }o{ "data.completed": true })
Patrones de acceso complejos
Para patrones de acceso complejos que requieren múltiples condiciones (por ejemplo, “propietario O administrador”), tienes dos opciones:- Usar la UI del panel de Base44 - El panel permite añadir múltiples reglas por operación con lógica OR
- Usar entidades separadas - Divide los datos en múltiples entidades con diferentes reglas de acceso
- Usar funciones de backend - Implementa lógica de acceso personalizada en funciones de backend
Seguridad a nivel de campo (FLS)
La seguridad a nivel de campo te permite controlar el acceso a campos individuales dentro de una entidad. Las reglas FLS se definen dentro del esquema de cada campo usando la propiedadrls.
Operaciones FLS
FLS admite las mismas operaciones que RLS a nivel de entidad:| Operación | Descripción |
|---|---|
create | Controla quién puede establecer este campo al crear registros |
read | Controla quién puede ver este campo |
update | Controla quién puede modificar este campo |
delete | Controla quién puede borrar este campo |
write | Abreviatura para create, update y delete combinados |
Ejemplo de FLS
hr pueden leer o actualizar el campo salary. Todos los usuarios con acceso a la entidad pueden leer/actualizar otros campos.
Notas de FLS
- Si no se define RLS a nivel de campo, el campo hereda las reglas RLS a nivel de entidad
- Las reglas FLS siguen el mismo formato de condición que RLS a nivel de entidad
- Usa FLS para campos sensibles como salario, SSN o notas internas
Enviar entidades
El comandoentities push enviará todas las entidades que existen en la carpeta base44/entities.
Esta página fue traducida usando IA. Para obtener la información más precisa y actualizada, consulta la versión en inglés.

