【发布时间】:2021-08-13 19:39:12
【问题描述】:
我正在尝试使用 express-validator 验证用户数据,但是当我从路由文件调用控制器中的用户注册方法时,页面不会加载。如果我将方法提取到路由中,它会起作用。我想把它分开来保持我的项目秩序。这是我的路线文件:
import { Router } from "express";
import RegisterController from '../controllers/RegisterController';
import { body, validationResult } from "express-validator";
import pool from '../database/db';
import Hash from '../lib/bcrypt';
const router = Router();
router.get('/', (req, res) => {
res.render('home', {
title: 'Inicio',
});
});
router.get('/formulario-registro', RegisterController.index);
router.post('/register', [
body('username')
.notEmpty()
.withMessage('El nombre de usuario no debe quedar vacío.'),
body('email')
.notEmpty()
.withMessage('El email no debe quedar vacío')
.isEmail()
.withMessage('El email debe de tener un formato correcto.'),
body('password')
.notEmpty()
.withMessage('La contraseña no debe de quedar vacía.')
.isLength({
min: 8
})
.withMessage('La contraseña debe de tener 8 caracteres como mínimo.')
.custom((value, { req }) => {
if (value !== req.body.confirm__password) {
return false;
} else {
return true;
}
})
.withMessage('Las contraseñas deben coincidir.')
], (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({
errors: errors.array()
});
} else {
RegisterController.register;
}
});
router
.get('/formulario-login', (req, res) => {
res.render('login_form', {
title: 'Inicio de sesión'
});
});
export default router;
这是我的控制器:
import Hash from '../lib/bcrypt';
import pool from '../database/db';
class RegisterController {
index(req, res) {
res.render('register_form', {
title: 'Registro'
});
}
register(req, res) {
const sql = 'INSERT INTO contact_app.users (username, email, password) VALUES (?, ?, ?)';
pool.query(sql, [req.body.username, req.body.email, Hash.encryptPass(req.body.password)], (err) => {
if (err) {
console.error(err);
} else {
console.log('User registered correctly.');
}
});
res.redirect('/formulario-login');
}
}
export default new RegisterController;
提前致谢!
【问题讨论】:
标签: javascript node.js express express-validator