Lendo erros de validação
Parte da seção APIs REST do Journey de Node.js da Coddy. Lição 10 de 25.
Um cliente precisa saber qual entrada corrigir. Quando safeParse falha, result.error descreve os problemas. z.flattenError os organiza em dois grupos: fieldErrors para campos nomeados e formErrors para o objeto como um todo.
const issues = z.flattenError(result.error);
const fields = Object.keys(issues.fieldErrors);Para um tipo de título incorreto, fields contém title. Object.keys retorna um array dos nomes das propriedades. Chame flattenError apenas no ramo de falha. Em caso de sucesso, não há erro para achatar. Este esquema verifica os campos listados. Erros estritos no nível do objeto são apresentados em Esquemas com zod.
Object.keys(fieldErrors) fornece os nomes dos campos. O método sort() coloca esses nomes em ordem alfabética.
Desafio
FácilEste é um pequeno projeto de prática. A configuração já foi fornecida; edite apenas exercise.js.
Em caso de sucesso, retorne {"fields":[]}. Em caso de falha, retorne os nomes em fieldErrors, em ordem alfabética. Envie {"title":42,"done":"yes"} usando POST para /result para obter {"fields":["done","title"]}. Um título válido e um booleano resultam em uma lista vazia.
A GET /result inicial usa o exemplo fornecido {"title": 42, "done": "yes"}. Use POST /result com um corpo JSON para testar outras entradas.
Experimente você mesmo
import { z } from 'zod';
const Task = z.object({ title: z.string(), done: z.boolean() });
export function exercise(body) {
return { fields: [] };
}
Todas as lições de APIs REST
1Recursos e verbos
Recursos e URLsCriando com POST4Navegadores, versões e configuração
O que é uma origemPermitindo outra origemCORSUma página que chama a API2Validação e erros
Validando a entradaPratique por conta própria: Playground de Express