Skip to content

flatten ​

按字段收集全部错误信息 —— Laravel 格式:{ email: ['...', '...'] }。如果前端已经支持显示 Laravel 错误,这在 API 响应中很方便。

签名 ​

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

参数 ​

参数类型说明
issuesIssue[]来自 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;
  }
});

另请参阅 ​