繁体   English   中英

Joi 异步自定义验证

[英]Joi async custom validation

我需要验证这个 object:

{a: 'valueA', b: 'valueB'}

要验证“a”,我需要检查他的值(valueA)是否存在于我的数据库中。 如果该值不存在,则 object 无效,否则有效。 如何使用 Joi 验证器创建自定义 async/await 来实现此目的?

您可以使用any.external()方法添加外部验证,它接收 function 作为参数,因此可用于检查数据库的值。

接收到的函数的第一个参数是您设置要验证的 object 的克隆。 它在所有其他验证之后运行。 如果架构验证失败,则不会调用任何外部验证规则。

const checkData = async (data) => {
  const res = await db.find({ name: data.a }) // or any method you use
  if (!res) {
    throw new Error('Data not found in db!')
  }
}

const schema = Joi.string().external(checkData)
await schema.validateAsync({ a: 'valueA', b: 'valueB' })

更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM