Skip to main content
Esta página es parte de una habilidad de agente de codificación con IA y está escrita para agentes, no para humanos. Para la documentación de Base44 legible por humanos, consulta la documentación para desarrolladores.

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 INCORRECTO: TeamMember.jsonc, teamMember.jsonc CORRECTO: team-member.jsonc

Directorio de entidades

Todas las definiciones de entidad deben colocarse en la carpeta base44/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

  1. Crea un nuevo archivo .jsonc en el directorio base44/entities/
  2. Define el esquema de tu entidad siguiendo la estructura a continuación
  3. 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 objeto schema:
CORRECTO - Coloca type y properties en el nivel superior:
Este es un error común que causará errores “Invalid schema: Schema must have a ‘type’ field” al enviar entidades.

Tipos de campo admitidos

String

Campo de texto básico:
Con formato:
Formatos disponibles: 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

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
  • 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 campo rls del esquema. Importante: Si no se define RLS, todos los registros son accesibles para todos los usuarios.

Operaciones RLS

RLS admite cinco operaciones:

Valores de permiso

Cada operación acepta uno de los siguientes valores:
  1. true - Permitir todos los usuarios (incluidos anónimos/no autenticados)
  2. false - Bloquear todos los usuarios
  3. 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:

Atributos integrados de entidad

Cada registro de entidad tiene estos atributos integrados disponibles para reglas RLS:

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:
2. Comprobación de condición de usuario - Comprueba las propiedades del usuario directamente usando user_condition:
Notas importantes:
  • user_condition solo 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, $nor están disponibles para combinar condiciones
⚠️ Para patrones RLS avanzados y ejemplos, consulta rls-examples.md

Ejemplos de RLS

Acceso solo del propietario:
Acceso basado en departamento:
Acceso solo de administrador:
Configuración RLS completa:

Patrones RLS comunes

Creación pública, gestión solo de administrador (por ejemplo, formularios de contacto, listas de espera):
Acceso solo del propietario:
Solo usuarios registrados:

Limitaciones

  • user_condition es solo igualdad: user_condition solo admite coincidencia exacta (por ejemplo, { "role": "admin" }) - sin operadores
  • Sin operadores de comparación en user_condition: $gt, $lt, $regex, $expr, $where NO están admitidos para condiciones de usuario
  • Sin plantillas profundamente anidadas: Las plantillas como {{user.data.profile.department}} pueden no funcionar
Operadores admitidos:
  • Operadores lógicos: $or, $and, $nor para 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 })
⚠️ Consulta rls-examples.md para patrones y ejemplos RLS completos

Patrones de acceso complejos

Para patrones de acceso complejos que requieren múltiples condiciones (por ejemplo, “propietario O administrador”), tienes dos opciones:
  1. Usar la UI del panel de Base44 - El panel permite añadir múltiples reglas por operación con lógica OR
  2. Usar entidades separadas - Divide los datos en múltiples entidades con diferentes reglas de acceso
  3. 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 propiedad rls.

Operaciones FLS

FLS admite las mismas operaciones que RLS a nivel de entidad:

Ejemplo de FLS

En este ejemplo, solo los usuarios con el rol 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 comando entities push enviará todas las entidades que existen en la carpeta base44/entities.
Para más detalles sobre el comando push, consulta entities-push.md.
Esta página fue traducida usando IA. Para obtener la información más precisa y actualizada, consulta la versión en inglés.