Necesito validar este objeto:
{a: 'valueA', b: 'valueB'}Para validar 'a', necesito verificar si su valor (valueA) está presente en mi base de datos. Si el valor no está presente, el objeto no es válido; de lo contrario, es válido. ¿Cómo puedo crear un async/await personalizado con el validador Joi para lograr esto?
Puede agregar una validación externa usando el método any.external() , recibe una función como parámetro, por lo que puede usarse para verificar la base de datos en busca de valores.
El primer parámetro de las funciones recibidas es el clon del objeto que configuraste para ser validado. Se ejecuta después de todas las demás validaciones. Si falla la validación del esquema, no se llama a ninguna regla de validación externa.
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' })