Solo estoy aprendiendo el nodo con el patrón MVC. Hice una clase de validación para validar los datos del usuario.
class UserValidation { constructor() {} emailAddressValidation(email) { console.log(email); const regularExpression = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return regularExpression.test(email.toLowerCase()); } passwordValidation(password) { const regularExpression = /^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{6,16}$/; } loginValidation(req, res, next) { const { email, password } = req.body; console.log(email); this.emailAddressValidation('addad'); // try { // if ( // this.emailAddressValidation(email) && // this.passwordValidation(password) // ) { // next(); // } else { // throw new Error( // 'All fields are Required.email,password.Password should be alpha numeric.' // ); // } // } catch (error) { // res.status(400).json({ err: 1, message: error.message }); // } } NewUserValidation(req, res, next) { const { name, email, password, address, skills } = req.body; try { if ( name && this.emailAddressValidation(email) && this.passwordValidation(password) && address.length > 0 && skills.length > 0 ) { next(); } else { throw new Error( 'All fields are required.Name,email,password,Address,Skills.Password should be alphanumeric.' ); } } catch (error) { res.status(400).json({ err: 1, message: error.message }); } } } export default new UserValidation();Algo como esto y usarlo en mi ruta así
router.post('/login', UserValidation.loginValidation);Pero no sé por qué tengo este error.
TypeError: no se puede leer la propiedad 'emailAddressValidation' de undefined
this se referirá a una instancia de esa clase. Deberá inicializar un objeto de UserValidation y llamar a loginValidation en ese objeto. Algo como esto:
const validator = UserValidation() router.post('/login', validator.loginValidation);