ValidationError
当数据无效时,parse 和 parseAsync 抛出的异常。继承自 Error。
签名
ts
class ValidationError extends Error {
name: 'ValidationError';
issues: Issue[];
errors: Record<string, string>;
message: string;
}字段
| 字段 | 说明 |
|---|---|
errors | 每个字段的第一个错误,键为点分隔路径。与 validate 相同 |
issues | 全部错误:{ code, message, path } |
message | 所有错误合并为一行:name: Required; email: Invalid email —— 便于记录日志 |
name | 始终为 'ValidationError' |
示例
Express 错误处理函数
ts
import { ValidationError } from 'tinyval';
app.use((err, req, res, next) => {
if (err instanceof ValidationError) {
return res.status(422).json({ message: 'Validation failed', errors: err.errors });
}
next(err);
});Laravel 风格的响应
ts
// { "message": "...", "errors": { "email": ["Invalid email"] } }
const errors = {};
for (const issue of err.issues) (errors[issue.path.join('.')] ??= []).push(issue.message);