我需要验证此对象:
{a: 'valueA', b: 'valueB'}
要验证‘a’,我需要判断它的值(ValueA)是否存在于我的数据库中.如果该值不存在,则该对象无效,否则有效.我如何使用Joi验证器创建一个定制的异步/等待来实现这一点?
我需要验证此对象:
{a: 'valueA', b: 'valueB'}
要验证‘a’,我需要判断它的值(ValueA)是否存在于我的数据库中.如果该值不存在,则该对象无效,否则有效.我如何使用Joi验证器创建一个定制的异步/等待来实现这一点?
您可以使用any.external()
方法添加外部验证,它接收一个函数作为参数,因此可以用来判断数据库中的值.
收到的函数的第一个参数是您设置要验证的对象的克隆.它在所有其他验证之后运行.如果架构验证失败,则不调用任何外部验证规则.
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' })