flatten
按字段收集全部错误信息 —— Laravel 格式:{ email: ['...', '...'] }。如果前端已经支持显示 Laravel 错误,这在 API 响应中很方便。
签名
ts
function flatten(issues: Issue[]): Record<string, string[]>参数
| 参数 | 类型 | 说明 |
|---|---|---|
issues | Issue[] | 来自 validate 的 result.issues,或来自 ValidationError 的 error.issues |
注意事项
- 键为点分隔路径,与
errors相同:address.city、items.0.title。值本身的错误在键''下。 - 默认每个字段只有一个错误。要获取全部错误,请向
validate或parse传入{ all: true }。
示例
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