flatten
Собирает все сообщения об ошибках по полям — в формате Laravel: { email: ['...', '...'] }. Удобно для ответа API, если фронтенд уже умеет показывать ошибки Laravel.
Сигнатура
ts
function flatten(issues: Issue[]): Record<string, string[]>Параметры
| Параметр | Тип | Описание |
|---|---|---|
issues | Issue[] | 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;
}
});См. также
- validate — поле
errorsс первой ошибкой каждого поля - ValidationError