Skip to content

flatten ​

Собирает все сообщения об ошибках по полям — в формате Laravel: { email: ['...', '...'] }. Удобно для ответа API, если фронтенд уже умеет показывать ошибки Laravel.

Сигнатура ​

ts
function flatten(issues: Issue[]): Record<string, string[]>

Параметры ​

ПараметрТипОписание
issuesIssue[]result.issues из validate или error.issues из ValidationError

Особенности ​

  • Ключ — путь через точку, как в errors: address.city, items.0.title. Ошибка самого значения — под ключом ''.
  • По умолчанию на каждое поле приходится одна ошибка. Чтобы получить все, передайте { all: true } в validate или parse.

Пример ​

ts
import { parse, flatten, ValidationError } from 'tinyval';

app.post('/users', (req, res) => {
  try {
    const user = parse(CreateUser, req.body, { all: true });
  } catch (e) {
    if (e instanceof ValidationError) {
      return res.status(422).json({ message: 'The given data was invalid.', errors: flatten(e.issues) });
      // { "errors": { "password": ["Must be at least 8 characters long", "Invalid format"] } }
    }
    throw e;
  }
});

См. также ​