Field Creator
Sequelize es una excelente herramienta para realizar consultas con la base de datos. Cuando se define un modelo, se especifica el tipo de dato, el tipo de validador, si acepta valores nulos o no. Propiedades que pueden ser requeridas en otros lugares, por ejemplo para crear el APIDOC, para validar los datos, etc.
Aprovechando la implementación de estos modelos, Field Creator permite reutilizar estas propiedades para crear objetos de tipo FieldGroup que pueden ser utilizados en todas estas situaciones.
Además se cuenta con una serie de campos predefinidos que facilitan la creación de modelos.
Características
- Es posible crear atributos predefinidos que con la propiedad
validate
incluida por defecto. - Es posible crear objetos de tipo
FieldGroup
. Un fieldGroup es un objeto formado por los campos de los modelos. - Incluye varios tipos de datos personalizados.
- Los tipos de datos personalizados pueden ser sobreescritos con el método
add
junto con la opción{ force: true }
.
Tipos de datos básicos
Tipo | Descripción | Validadores por defecto |
---|---|---|
STRING |
Cadena de texto. | len: [0, LENGHT] |
TEXT |
Bloque de texto. | len: [0, 2147483647] |
INTEGER |
Número entero. | isInt: true , min: 0 , max: 2147483647 |
FLOAT |
Número en coma flotante. | isFloat: true , min: 0 , max: 1E+308 |
BOOLEAN |
Valor booleano. | isBoolean: true |
DATE |
Fecha (día y hora). | isDate: true |
DATEONLY |
Solamente fecha. | isDate: true |
TIME |
Solamente hora. | isTime: custom |
JSON |
Objeto de tipo JSON. | isJson: custom |
JSONB |
Objeto de tipo JSONB. | isJson: custom |
UUID |
Código de tipo UUID. | isUUID: 4 |
ENUM |
Tipo enumerado. | isIn: [VALUES] |
ARRAY |
Lista de valores. | isArray: custom |
Tipos de datos personalizados
Algunos tipos de datos se usan con mayor frecuencia, es por eso que se definieron en base a los tipos de datos básicos.
- Clave primaria
FieldFieldField
- Auditoria
FieldFieldFieldFieldFieldFieldField
- Filtros y consultas
FieldFieldFieldField
- Autenticación
FieldFieldFieldFieldFieldFieldFieldFieldFieldField
- Otros tipos de datos
Field
Propiedades de un atributo
Propiedad | Descripción |
---|---|
primaryKey |
Indica si es una clave primaria. |
autoIncrement |
Indica si es autoincrementable. |
unique |
Indica si el registro debe ser único. |
defaultValue |
Valor por defecto. |
example |
Valor de ejemplo. |
allowNull |
Indica si el campo acepta valores nulos. |
allowNullObj |
Indica si el objeto al que pertenece el campo acepta valores nulos. |
comment |
Descripción del atributo. |
uniqueMsg |
Mensaje de error para validar unique . |
allowNullMsg |
Mensaje de error para validar allowNull . |
allowNullObjMsg |
Mensaje de error para validar allowNullObj . |
validate |
Objeto para validar el tipo de dato. |
A continuación se muestra un ejemplo para crear un campo de tipo ID:
const ID = Field
Propiedad validate
Un validador puede tener uno de los siguientes formatos:
const validate = min: 10 const validate = min: args: 10 const validate = min: args: 10 msg: 'Mensaje de error personalizado.' const validate = len: 2 5 const validate = len: args: 2 5 const validate = len: args: 2 5 msg: 'Mensaje de error personalizado.' const validate = isIn: 'A' 'B' const validate = isIn: args: 'A' 'B' const validate = isIn: args: 'A' 'B' msg: 'Mensaje de error personalizado.'
Cuando se trata de validadores booleanos, son válidos los siguientes formatos:
const validate = isEmail: true const validate = isEmail: msg: 'Mensaje de error personalizado.'
Para validadores personalizados:
const validate = { if % 2 !== 0 throw `Debe ser un número par.` }
Lista de validadores
A continuación se muestra una lista de opciones de la propiedad validate
. Puede encontrar más información en: http://docs.sequelizejs.com/manual/tutorial/models-definition.html#validations
const validate = is : '^[a-z]+$' 'i' is : /^[a-z]+$/i not : '[a-z]' 'i' isEmail : true isUrl : true isIP : true isIPv4 : true isIPv6 : true isAlpha : true isAlphanumeric : true isNumeric : true isInt : true isFloat : true isDecimal : true isLowercase : true isUppercase : true notEmpty : true equals : 'ABC123' contains : 'def' notContains : 'def' notIn : 'A' 'B' isIn : 'A' 'B' len : 2 5 isUUID : 4 isDate : true isAfter : '2010-05-30' isBefore : '2020-05-30' min : 10 max : 12 isCreditCard : true
clone
Función Crea una copia a partir de otro atributo, modificando algunas de sus propiedades si fuera necesario.
const ID = Field const INPUT = id: Field
add
Función Adiciona un tipo de dato personalizado que luego puede ser utilizado como un tipo de dato básico.
// Es posible adicionar nuevos tipos de datos.Field // Es posible actualizar los valores de un tipo de dato personalizado.Field const LIBRO = sequelize
use
Función Adiciona o modifica un tipo de dato. Similar a la función add
pero con la opción force
por defecto en true
.
// Modifica el tipo de dato ID predefinido.Field const AUTOR = sequelize Field const LIBRO = sequelize
group
Función Crea un objeto de tipo FieldGroup. Un fieldGroupd es un objeto formado por atributos de un modelo Sequelize.
Por ejemplo, si se tienen los modelos autor
y libro
, relacionados de 1:N
.
const AUTOR = sequelizeconst LIBRO = sequelizeLIBROAUTOR
Se pueden crear los siguientes FieldGroups.
const AUTOR_OUTPUT = Field const LIBRO_OUTPUT = Field
La función THIS
, indica que el campo, es parte del modelo especificado en el group
.
Instalación
Para instalar sobre un proyecto, ejecutar el siguiente comando:
$ npm install --save field-creator
Ejemplo 1. Creando un modelo
Definición de un modelo libro
de la forma tradicional:
const LIBRO = sequelize
Definición del mismo modelo libro
utilizando la librería:
const LIBRO = sequelize
Ejemplo 2. Definiendo FieldGroups anidados
const Field THIS =const fieldGroup = Field