Skip to content

checkAsync ​

自定义异步检查:数据库查询、外部 API。只能与 validateAsync 和 parseAsync 一起使用。

签名 ​

ts
function checkAsync<T>(fn: (value: T, info: Info) => Promise<boolean> | boolean, msg?: Message): Action<T>

参数 ​

参数类型说明
fn(value: T, info: Info) => Promise<boolean> | boolean检查函数。info 与 check 相同
msgMessage自定义错误信息。可以是带 {参数} 的字符串或函数

错误代码 ​

代码触发条件默认信息
invalidfn 返回 falseInvalid value

可以修改这些文本:见 错误信息与国际化。

注意事项 ​

  • 在该字段所有同步规则之后执行,并且只在它们通过时执行 —— 无效的邮箱不会被发送到数据库。
  • 不同字段的异步检查并行执行。
  • 对于这样的 Schema,validate 和 parse 会抛出错误 —— 请使用异步版本。
  • 不会修改值:checkAsync 只做检查。

示例 ​

唯一的邮箱 ​

ts
const Signup = object({
  email: pipe(
    string(),
    trim(),
    toLowerCase(),
    email(),
    checkAsync(async (v) => !(await db.users.exists({ email: v })), '该邮箱已注册'),
  ),
});

const result = await validateAsync(Signup, req.body);

另请参阅 ​