Saltearse al contenido

Validador de datos

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:

  1. Campos requeridos (required): Verifica que el campo exista y no sea null ni undefined.
  2. Validacion de tipo (type): Comprueba que el valor sea del tipo esperado. Tipos soportados: string, number, boolean, object, array, null.
  3. Valores permitidos (enum): Verifica que el valor este dentro de una lista de valores permitidos.
  4. Validacion recursiva de subarrays (items): Si un campo es de tipo array y tiene items definido, 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.

ParametroTipoRequeridoDescripcion
schemaobjectSiEsquema de validacion con reglas por campo. Cada campo puede tener: required, type, enum, items.
{
"nextModule": "siguiente-nodo",
"data": { },
"validation": {
"success": true,
"errors": [],
"totalValidated": 1
}
}
{
"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
}
}
{
"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.success es true solo si no hay ningun error.
  • totalValidated indica 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.
  • decision (Nodo de decision - para actuar segun resultado de validacion)
  • multiroute (Multiroute - para bifurcar flujo)