Menu
CoddyTech

Чтение ошибок валидации

Часть раздела REST API путешествия по Node.js на Coddy. Урок 10 из 25.

Клиенту нужно знать, какое поле ввода исправить. Если safeParse завершается ошибкой, result.error описывает проблемы. z.flattenError распределяет их по двум группам: fieldErrors для именованных полей и formErrors для объекта в целом.

const issues = z.flattenError(result.error);
const fields = Object.keys(issues.fieldErrors);

Если тип title указан неверно, fields содержит title. Object.keys возвращает массив имен свойств. Вызывай flattenError только в ветке с ошибкой. При успешном результате нечего преобразовывать. Эта схема проверяет перечисленные в ней поля. Строгие ошибки на уровне объекта рассматриваются в разделе «Схемы с zod».

Object.keys(fieldErrors) возвращает имена полей. Метод sort() располагает эти имена в алфавитном порядке.

challenge icon

Задание

Легко

Это небольшой практический проект. Настройка уже выполнена; редактируй только exercise.js.

В случае успеха верни {"fields":[]}. В случае ошибки верни названия из fieldErrors в алфавитном порядке. Отправка {"title":42,"done":"yes"} методом POST на /result возвращает {"fields":["done","title"]}. При допустимом названии и логическом значении возвращается пустой список.

Начальный запрос GET /result использует предоставленный пример {"title": 42, "done": "yes"}. Используй POST /result с телом запроса в формате JSON, чтобы попробовать другие входные данные.

Попробуйте сами

import { z } from 'zod';
const Task = z.object({ title: z.string(), done: z.boolean() });
export function exercise(body) {
    return { fields: [] };
}

Все уроки раздела REST API

Потренируйтесь самостоятельно: Песочница Express