Этот - очень хороший модуль для проверки синтаксиса и значений тела запроса.Вот пример.
Вы можете создать вспомогательный модуль requestValidator.js
для проверки всех запросов маршрутов.с учетом API регистрации.
const Joi = require('joi');
module.exports = {
// auth
validateSignUp: (input) => {
const schema = Joi.object().keys({
firstName: Joi.string().required(),
lastName: Joi.string().required(),
email: Joi.string().email({ minDomainAtoms: 2 }).required(),
password: Joi.string().min(6).max(20).required(),
confirmPassword: Joi.string().valid(Joi.ref('password')).required().options({
language: {
any: {
allowOnly: 'must match password'
}
}
}),
gender: Joi.string().required(),
address: addressSchema.required(),
});
return Joi.validate(input, schema);
},
}
И в вашем authController.js
const { validateSignUp } = require('../helpers/requestValidation');
module.exports = {
signUp: async (req, res, next) => {
const body = req.body;
// validation
const { error } = validateSignUp(body);
if(error) return res.status(400).json({
success: false,
message: error
});
const user = await User.findOne({ email: email.toLowerCase() });
if(user) {
return respondFailure(res, 'the email address you have entered is already registered');
}
const newUser = new User(body);
await newUser.save();
return res.status(400).json({
success: true,
message: 'user registered successfully',
data: newUser
});
},
}
вы можете добавить проверку всего запроса вашего приложения в requestValidator.js
и использовать его в своих контроллерах.