[英]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.