fallback
出错时使用的替代值。适用于 query 参数和设置:?page=abc 得到 page: 1,而不是 422 响应。
签名
ts
function fallback<T>(schema: Schema<T>, value: T | ((input: unknown) => T)): Schema<T>参数
| 参数 | 类型 | 说明 |
|---|---|---|
schema | Schema<T> | 值的 Schema |
value | T | (input) => T | 出错时的值,或接收原始输入并返回替代值的函数 |
注意事项
- 对 Schema 的任何错误生效,包括空值 —— 因此不需要另外使用
optional。 - 不会隐藏异步检查(
checkAsync)的错误:在它们返回结果时,值已经确定。 - 不要用于错误很重要的数据(表单、创建记录)—— 用户将无法得知输入有误。
示例
ts
// GET /products?page=abc&limit=1000&sort=price
const Query = object({
page: fallback(pipe(coerce.number(), integer(), min(1)), 1),
limit: fallback(pipe(coerce.number(), integer(), min(1), max(100)), 20),
sort: fallback(oneOf(['date', 'price', 'name']), 'date'),
});
parse(Query, req.query); // { page: 1, limit: 20, sort: 'price' }