Parámetros de configuración de la colección
name - Nombre de la colección
- Tipo:
string - Obligatorio: ✅
- Descripción: Es el identificador único para la colección, y debe ser único en toda la aplicación.
- Ejemplo:
title - Título de la colección
- Tipo:
string - Obligatorio: ❌
- Descripción: El título que se muestra para la colección, utilizado en la interfaz de usuario.
- Ejemplo:
migrationRules - Reglas de migración
- Tipo:
MigrationRule[] - Obligatorio: ❌
- Descripción: Define las reglas de procesamiento para la migración de datos.
- Ejemplo:
inherits - Heredar colecciones
- Tipo:
string[] | string - Obligatorio: ❌
- Descripción: Permite heredar definiciones de campos de otras colecciones. Admite la herencia de una o varias colecciones.
- Ejemplo:
filterTargetKey - Clave de destino para filtrar
- Tipo:
string | string[] - Obligatorio: ❌
- Descripción: La clave de destino que se utiliza para filtrar consultas. Admite una o varias claves.
- Ejemplo:
fields - Definiciones de campos
- Tipo:
FieldOptions[] - Obligatorio: ❌
- Valor predeterminado:
[] - Descripción: Un array de definiciones de campos para la colección. Cada campo incluye información como el tipo, el nombre y la configuración.
- Ejemplo:
model - Modelo personalizado
- Tipo:
string | ModelStatic<Model> - Obligatorio: ❌
- Descripción: Permite especificar una clase de modelo Sequelize personalizada, que puede ser el nombre de la clase o la clase del modelo en sí.
- Ejemplo:
repository - Repositorio personalizado
- Tipo:
string | RepositoryType - Obligatorio: ❌
- Descripción: Permite especificar una clase de repositorio personalizada para manejar la lógica de acceso a los datos.
- Ejemplo:
autoGenId - Generar ID automáticamente
- Tipo:
boolean - Obligatorio: ❌
- Valor predeterminado:
true - Descripción: Indica si se debe generar automáticamente un ID de clave primaria.
- Ejemplo:
timestamps - Habilitar marcas de tiempo
- Tipo:
boolean - Obligatorio: ❌
- Valor predeterminado:
true - Descripción: Indica si se deben habilitar los campos
createdAt(fecha de creación) yupdatedAt(fecha de actualización). - Ejemplo:
createdAt - Campo de fecha de creación
- Tipo:
boolean | string - Obligatorio: ❌
- Valor predeterminado:
true - Descripción: Configuración para el campo
createdAt. - Ejemplo:
updatedAt - Campo de fecha de actualización
- Tipo:
boolean | string - Obligatorio: ❌
- Valor predeterminado:
true - Descripción: Configuración para el campo
updatedAt. - Ejemplo:
deletedAt - Campo de eliminación lógica
- Tipo:
boolean | string - Obligatorio: ❌
- Valor predeterminado:
false - Descripción: Configuración para el campo de eliminación lógica.
- Ejemplo:
paranoid - Modo de eliminación lógica
- Tipo:
boolean - Obligatorio: ❌
- Valor predeterminado:
false - Descripción: Indica si se debe habilitar el modo de eliminación lógica.
- Ejemplo:
underscored - Nomenclatura con guion bajo
- Tipo:
boolean - Obligatorio: ❌
- Valor predeterminado:
false - Descripción: Indica si se debe usar el estilo de nomenclatura con guion bajo para los nombres de las columnas de la base de datos.
- Ejemplo:
indexes - Configuración de índices
- Tipo:
ModelIndexesOptions[] - Obligatorio: ❌
- Descripción: Configuración de índices para la base de datos.
- Ejemplo:
Configuración de parámetros de campo
NocoBase es compatible con múltiples tipos de campo, todos definidos a partir del tipo de unión FieldOptions. La configuración de campo incluye propiedades básicas, propiedades específicas del tipo de datos, propiedades de relación y propiedades de renderizado para el frontend.
Opciones básicas de campo
Todos los tipos de campo heredan de BaseFieldOptions, lo que proporciona capacidades de configuración de campo comunes:
Ejemplo:
name - Nombre del campo
- Tipo:
string - Obligatorio: ❌
- Descripción: El nombre de la columna del campo en la base de datos, que debe ser único dentro de la colección.
- Ejemplo:
hidden - Ocultar campo
- Tipo:
boolean - Valor predeterminado:
false - Descripción: Indica si este campo debe ocultarse por defecto en listas y formularios.
- Ejemplo:
validation - Reglas de validación
- Tipo:
ValidationOptions<T> - Descripción: Utiliza Joi para definir reglas de validación del lado del servidor.
- Ejemplo:
allowNull - Permitir valores nulos
- Tipo:
boolean - Valor predeterminado:
true - Descripción: Controla si la base de datos permite escribir valores
NULL. - Ejemplo:
defaultValue - Valor predeterminado
- Tipo:
any - Descripción: El valor predeterminado para el campo, que se utiliza cuando se crea un registro sin proporcionar un valor para este campo.
- Ejemplo:
unique - Restricción de unicidad
- Tipo:
boolean | string - Valor predeterminado:
false - Descripción: Indica si el valor debe ser único. Una cadena puede utilizarse para especificar el nombre de la restricción.
- Ejemplo:
primaryKey - Clave primaria
- Tipo:
boolean - Valor predeterminado:
false - Descripción: Declara este campo como la clave primaria.
- Ejemplo:
autoIncrement - Auto-incremento
- Tipo:
boolean - Valor predeterminado:
false - Descripción: Habilita el auto-incremento (solo aplicable a campos numéricos).
- Ejemplo:
field - Nombre de columna en la base de datos
- Tipo:
string - Descripción: Especifica el nombre real de la columna en la base de datos (consistente con el
fieldde Sequelize). - Ejemplo:
comment - Comentario de la base de datos
- Tipo:
string - Descripción: Un comentario para el campo de la base de datos, utilizado con fines de documentación.
- Ejemplo:
title - Título de visualización
- Tipo:
string - Descripción: El título de visualización para el campo, comúnmente utilizado en la interfaz de usuario.
- Ejemplo:
description - Descripción del campo
- Tipo:
string - Descripción: Información descriptiva sobre el campo para ayudar a los usuarios a comprender su propósito.
- Ejemplo:
interface - Componente de interfaz
- Tipo:
string - Descripción: El componente de interfaz de usuario recomendado para el campo.
- Ejemplo:
Interfaces de tipos de campo
type: 'string' - Campo de cadena de texto
- Descripción: Se utiliza para almacenar datos de texto cortos. Admite límites de longitud y recorte automático.
- Tipo de base de datos:
VARCHAR - Propiedades específicas:
length: Límite de longitud de la cadena.trim: Indica si se deben eliminar automáticamente los espacios iniciales y finales.
Ejemplo:
type: 'text' - Campo de texto largo
- Descripción: Se utiliza para almacenar datos de texto largos. Admite diferentes tipos de texto en MySQL.
- Tipo de base de datos:
TEXT,MEDIUMTEXT,LONGTEXT - Propiedades específicas:
length: Tipo de longitud de texto de MySQL (tiny/medium/long).
Ejemplo:
Tipos numéricos
type: 'integer' - Campo de número entero
- Descripción: Se utiliza para almacenar datos de números enteros. Admite auto-incremento y clave primaria.
- Tipo de base de datos:
INTEGER
Ejemplo:
type: 'bigInt' - Campo de número entero grande
- Descripción: Se utiliza para almacenar datos de números enteros grandes, con un rango mayor que
integer. - Tipo de base de datos:
BIGINT
Ejemplo:
type: 'float' - Campo de número flotante
- Descripción: Se utiliza para almacenar números de punto flotante de precisión simple.
- Tipo de base de datos:
FLOAT - Propiedades específicas:
precision: La cantidad total de dígitos.scale: La cantidad de decimales.
Ejemplo:
type: 'double' - Campo de número flotante de doble precisión
- Descripción: Se utiliza para almacenar números de punto flotante de doble precisión, que tienen mayor precisión que
float. - Tipo de base de datos:
DOUBLE - Propiedades específicas:
precision: La cantidad total de dígitos.scale: La cantidad de decimales.
Ejemplo:
type: 'real' - Campo de número real
- Descripción: Se utiliza para almacenar números reales; depende de la base de datos.
- Tipo de base de datos:
REAL - Propiedades específicas:
precision: La cantidad total de dígitos.scale: La cantidad de decimales.
Ejemplo:
type: 'decimal' - Campo decimal
- Descripción: Se utiliza para almacenar números decimales exactos, adecuados para cálculos financieros.
- Tipo de base de datos:
DECIMAL - Propiedades específicas:
precision: La cantidad total de dígitos.scale: La cantidad de decimales.
Ejemplo:
Tipos booleanos
type: 'boolean' - Campo booleano
- Descripción: Se utiliza para almacenar valores verdadero/falso, normalmente para estados de encendido/apagado.
- Tipo de base de datos:
BOOLEANoTINYINT(1)
Ejemplo:
type: 'radio' - Campo de selección única (radio)
- Descripción: Se utiliza para almacenar un único valor seleccionado, normalmente para opciones binarias.
- Tipo de base de datos:
BOOLEANoTINYINT(1)
Ejemplo:
Tipos de fecha y hora
type: 'date' - Campo de fecha
- Descripción: Se utiliza para almacenar datos de fecha sin información de hora.
- Tipo de base de datos:
DATE - Propiedades específicas:
timezone: Indica si se debe incluir información de zona horaria.
Ejemplo:
type: 'time' - Campo de hora
- Descripción: Se utiliza para almacenar datos de hora sin información de fecha.
- Tipo de base de datos:
TIME - Propiedades específicas:
timezone: Indica si se debe incluir información de zona horaria.
Ejemplo:
type: 'datetimeTz' - Campo de fecha y hora con zona horaria
- Descripción: Se utiliza para almacenar datos de fecha y hora con información de zona horaria.
- Tipo de base de datos:
TIMESTAMP WITH TIME ZONE - Propiedades específicas:
timezone: Indica si se debe incluir información de zona horaria.
Ejemplo:
type: 'datetimeNoTz' - Campo de fecha y hora sin zona horaria
- Descripción: Se utiliza para almacenar datos de fecha y hora sin información de zona horaria.
- Tipo de base de datos:
TIMESTAMPoDATETIME - Propiedades específicas:
timezone: Indica si se debe incluir información de zona horaria.
Ejemplo:
type: 'dateOnly' - Campo de solo fecha
- Descripción: Se utiliza para almacenar datos que contienen solo la fecha, sin la hora.
- Tipo de base de datos:
DATE - Ejemplo:
type: 'unixTimestamp' - Campo de marca de tiempo Unix
- Descripción: Se utiliza para almacenar datos de marca de tiempo Unix.
- Tipo de base de datos:
BIGINT - Propiedades específicas:
epoch: La hora de la época (epoch time).
Ejemplo:
Tipos JSON
type: 'json' - Campo JSON
- Descripción: Se utiliza para almacenar datos en formato JSON, compatible con estructuras de datos complejas.
- Tipo de base de datos:
JSONoTEXT - Ejemplo:
type: 'jsonb' - Campo JSONB
- Descripción: Se utiliza para almacenar datos en formato JSONB (específico de PostgreSQL), que admite indexación y consulta.
- Tipo de base de datos:
JSONB(PostgreSQL) - Ejemplo:
Tipos de array
type: 'array' - Campo de array
- Descripción: Se utiliza para almacenar datos de array, compatible con varios tipos de elementos.
- Tipo de base de datos:
JSONoARRAY - Propiedades específicas:
dataType: Tipo de almacenamiento (json/array).elementType: Tipo de elemento (STRING/INTEGER/BOOLEAN/JSON).
Ejemplo:
type: 'set' - Campo de conjunto
- Descripción: Se utiliza para almacenar datos de conjunto, similar a un array pero con una restricción de unicidad.
- Tipo de base de datos:
JSONoARRAY - Propiedades específicas:
dataType: Tipo de almacenamiento (json/array).elementType: Tipo de elemento (STRING/INTEGER/BOOLEAN/JSON).
Ejemplo:
Tipos de identificador
type: 'uuid' - Campo UUID
- Descripción: Se utiliza para almacenar identificadores únicos en formato UUID.
- Tipo de base de datos:
UUIDoVARCHAR(36) - Propiedades específicas:
autoFill: Rellena automáticamente el valor.
Ejemplo:
type: 'nanoid' - Campo Nanoid
- Descripción: Se utiliza para almacenar identificadores únicos cortos en formato Nanoid.
- Tipo de base de datos:
VARCHAR - Propiedades específicas:
size: Longitud del ID.customAlphabet: Conjunto de caracteres personalizado.autoFill: Rellena automáticamente el valor.
Ejemplo:
type: 'uid' - Campo UID personalizado
- Descripción: Se utiliza para almacenar identificadores únicos en un formato personalizado.
- Tipo de base de datos:
VARCHAR - Propiedades específicas:
prefix: Un prefijo para el identificador.pattern: Un patrón de validación.
Ejemplo:
type: 'snowflakeId' - Campo ID Snowflake
- Descripción: Se utiliza para almacenar identificadores únicos generados por el algoritmo Snowflake.
- Tipo de base de datos:
BIGINT - Ejemplo:
Campos funcionales
type: 'password' - Campo de contraseña
- Descripción: Se utiliza para almacenar datos de contraseña cifrados.
- Tipo de base de datos:
VARCHAR - Propiedades específicas:
length: Longitud del hash.randomBytesSize: Tamaño de los bytes aleatorios.
Ejemplo:
type: 'encryption' - Campo de cifrado
- Descripción: Se utiliza para almacenar datos sensibles cifrados.
- Tipo de base de datos:
VARCHAR - Ejemplo:
type: 'virtual' - Campo virtual
- Descripción: Se utiliza para almacenar datos virtuales calculados que no se guardan en la base de datos.
- Tipo de base de datos: Ninguno (campo virtual)
- Ejemplo:
type: 'context' - Campo de contexto
- Descripción: Se utiliza para leer datos del contexto de ejecución (por ejemplo, información del usuario actual).
- Tipo de base de datos: Determinado por
dataType. - Propiedades específicas:
dataIndex: Ruta del índice de datos.dataType: Tipo de datos.createOnly: Se establece solo en la creación.
Ejemplo:
Campos de relación
type: 'belongsTo' - Relación "pertenece a"
- Descripción: Representa una relación de muchos a uno, donde el registro actual pertenece a otro registro.
- Tipo de base de datos: Campo de clave externa
- Propiedades específicas:
target: Nombre de la colección de destino.foreignKey: Nombre del campo de clave externa.targetKey: Nombre del campo de clave de destino en la colección de destino.onDelete: Acción en cascada al eliminar.onUpdate: Acción en cascada al actualizar.constraints: Indica si se deben habilitar las restricciones de clave externa.
Ejemplo:
type: 'hasOne' - Relación "tiene uno"
- Descripción: Representa una relación de uno a uno, donde el registro actual tiene un registro relacionado.
- Tipo de base de datos: Campo de clave externa
- Propiedades específicas:
target: Nombre de la colección de destino.foreignKey: Nombre del campo de clave externa.sourceKey: Nombre del campo de clave de origen en la colección de origen.onDelete: Acción en cascada al eliminar.onUpdate: Acción en cascada al actualizar.constraints: Indica si se deben habilitar las restricciones de clave externa.
Ejemplo:
type: 'hasMany' - Relación "tiene muchos"
- Descripción: Representa una relación de uno a muchos, donde el registro actual tiene varios registros relacionados.
- Tipo de base de datos: Campo de clave externa
- Propiedades específicas:
target: Nombre de la colección de destino.foreignKey: Nombre del campo de clave externa.sourceKey: Nombre del campo de clave de origen en la colección de origen.sortBy: Campo de ordenación.sortable: Indica si el campo es ordenable.onDelete: Acción en cascada al eliminar.onUpdate: Acción en cascada al actualizar.constraints: Indica si se deben habilitar las restricciones de clave externa.
Ejemplo:
type: 'belongsToMany' - Relación "pertenece a muchos"
- Descripción: Representa una relación de muchos a muchos, conectando dos colecciones a través de una tabla intermedia.
- Tipo de base de datos: Tabla intermedia
- Propiedades específicas:
target: Nombre de la colección de destino.through: Nombre de la tabla intermedia.foreignKey: Nombre del campo de clave externa.otherKey: La otra clave externa en la tabla intermedia.sourceKey: Nombre del campo de clave de origen en la colección de origen.targetKey: Nombre del campo de clave de destino en la colección de destino.onDelete: Acción en cascada al eliminar.onUpdate: Acción en cascada al actualizar.constraints: Indica si se deben habilitar las restricciones de clave externa.
Ejemplo:

