Closed yachtsman-dev closed 7 months ago
I would like to work on it but can you give me a little more for the explanation as im not able to get to the problem.
Or the promise error you are getting is must be because the validateAsync is an async function. so, you should use await first with the schema.validate
I would like to work on it but can you give me a little more for the explanation as im not able to get to the problem.
I am using validate middleware, see this file. https://github.com/hagopj13/node-express-boilerplate/blob/master/src/middlewares/validate.js
This is my schema
{ body: Joi.object().keys({ Number: Joi.number().external(verifyNumber), TotalAmount: Joi.number().positive().greater(0).required(), Email: Joi.string().email().required(), Currency: Joi.string().required(), ExpiryMonth: Joi.number().when('type', { is: 'card', then: Joi.number().max(12).min(1).required() }), ExpiryYear: Joi.number().when('type', { is: 'card', then: Joi.number().min(moment().year()).required() }) }), }
This is external validation function
const verifyNumber = async (value, helpers) => { try { const res = db function to check record and it's returning true or false; if (res) { return value } else { return helpers.message("Can't verify number, please contact us.") } } catch (error) { return helpers.message("Can't verify number, please contact us.") } };
In above Schema verifyNumber
is my db function where i am verify number with database and return true if success else returning error message. If i use validateAsync
in middleware then external validation work but other validation are giving error as mentioned in above details. If i use only validate
instead of validateAsync
in middleware then it's giving me error Schema with external rules must use validateAsync()
. So now my problem is how can i use external and normal validation both by using above middleware?
@Aditya7842 hope you got all details, please check and let me know
Kind of a new problem for me. But by doing some document reading i think this can fix your code to use the validateAsync in it.
validateAsync
@Aditya7842 Yes it seems working. But only issue is if error on external validation then it's not giving errors with other validation errors. Once all other validations are fix then on next try it's giving error for external validation.
In latest version of Joi validation when try to run validation it's giving error
Schema with external rules must use validateAsync()
When i try to replacevalidate
method byvalidateAsync
then it's stop executing other normal validation and giving me promise error likenode:internal/process/promises:288 triggerUncaughtException(err, true /* fromPromise */);
Is there any way to use external and normal validation with this middleware?