Validador de datos
Descripcion
Sección titulada «Descripcion»Este modulo valida los datos de entrada contra un esquema definido. Es un modulo sincrono (no async) que evalua cada campo de los datos segun las reglas configuradas y retorna un informe de validacion sin modificar los datos originales.
Capacidades de validacion:
- Campos requeridos (
required): Verifica que el campo exista y no sea null ni undefined. - Validacion de tipo (
type): Comprueba que el valor sea del tipo esperado. Tipos soportados: string, number, boolean, object, array, null. - Valores permitidos (
enum): Verifica que el valor este dentro de una lista de valores permitidos. - Validacion recursiva de subarrays (
items): Si un campo es de tipo array y tieneitemsdefinido, valida cada elemento del array contra el sub-esquema.
El modulo soporta tanto objetos individuales como arrays de objetos. En caso de arrays, valida cada elemento individualmente y reporta errores con rutas como data[0].campo.
Importante: el modulo no detiene el flujo si hay errores de validacion. Siempre retorna los datos originales junto con el resultado de la validacion, permitiendo que el nodo siguiente decida como manejar los errores.
Configuracion
Sección titulada «Configuracion»| Parametro | Tipo | Requerido | Descripcion |
|---|---|---|---|
| schema | object | Si | Esquema de validacion con reglas por campo. Cada campo puede tener: required, type, enum, items. |
{ "nextModule": "siguiente-nodo", "data": { }, "validation": { "success": true, "errors": [], "totalValidated": 1 }}Salida con errores
Sección titulada «Salida con errores»{ "nextModule": "siguiente-nodo", "data": { }, "validation": { "success": false, "errors": [ { "field": "data.email", "message": "Field is required" }, { "field": "data.age", "message": "Expected type number, got string" }, { "field": "data.status", "message": "Invalid value 'unknown', must be one of: active, inactive" } ], "totalValidated": 1 }}Ejemplo de Uso
Sección titulada «Ejemplo de Uso»Caso basico
Sección titulada «Caso basico»{ "schema": { "nombre": { "required": true, "type": "string" }, "edad": { "required": true, "type": "number" }, "email": { "required": true, "type": "string" }, "estado": { "type": "string", "enum": ["activo", "inactivo", "pendiente"] }, "direcciones": { "type": "array", "items": { "calle": { "required": true, "type": "string" }, "ciudad": { "required": true, "type": "string" } } } }}- El modulo no modifica los datos de entrada; siempre los retorna tal cual en el campo
data. - La validacion es recursiva para campos de tipo array con
items. - Los mensajes de error estan en ingles e incluyen la ruta completa del campo (ej:
data[0].direcciones[1].calle). - El campo
validation.successestruesolo si no hay ningun error. totalValidatedindica cuantos objetos se validaron (util cuando la entrada es un array).- Se recomienda usar un nodo de decision despues de este modulo para bifurcar el flujo segun
validation.success. - Este modulo es sincrono y no requiere credenciales ni acceso a APIs externas.
Nodos Relacionados
Sección titulada «Nodos Relacionados»- decision (Nodo de decision - para actuar segun resultado de validacion)
- multiroute (Multiroute - para bifurcar flujo)