Express - POST 请求待处理

tra*_*ada 2 node.js express

我有一个注册用户的表格,但发布请求不起作用

\n\n

我已经检查了 bodyparser,委托包括订单,将 enctype 添加到表单中,但仍然不起作用

\n\n

该路线正在工作,因为它调用我的控制器,但正如您在控制台图像中看到的那样,它会以未定义的请求转到控制器,尽管 url 参数是在 devtools 中定义的

\n\n

服务器.js:

\n\n
const express = require(\'express\'); \nconst consign = require(\'consign\');\nconst bodyParser = require(\'body-parser\');\nconst expressValidator = require(\'express-validator\');\nconst helmet = require(\'helmet\');\nconst jwt = require(\'jsonwebtoken\');\nrequire(\'dotenv-safe\').load();  \n\nconst app = express(); \napp.set(\'view engine\', \'ejs\');\napp.set(\'views\', \'./app/paginas\'); \n\napp.use(express.static(\'./app/publico/\'));\napp.use(bodyParser.urlencoded({extended: true}));\napp.use(bodyParser.json());\napp.use(expressValidator());\n\nconsign(/* {cwd: \'app\'} */)\n    .include(\'config/conectarBD.js\')\n    .then(\'app/modelos\')\n    .then(\'app/controles\')\n    .then(\'app/rotas\')\n    .into(app);\n\n\n/* consign()\n    .include(\'app/rotas\')\n    .then(\'config/conectarBD.js\')\n    .then(\'app/modelos\')\n    .then(\'app/controles\')\n    .into(app); */\n\nconsole.log(\'Inst\xc3\xa2ncia do app criada\');\n\nmodule.exports = app;\n
Run Code Online (Sandbox Code Playgroud)\n\n

表单.ejs:

\n\n
<div class="row" id="form_registro">\n                <div class="col-sm-6 offset-sm-3 text-center">\n                        <form action="/registrar" method="POST">\n                        <fieldset>\n                            <legend>Registro</legend>\n                            <div class="form-group">\n                                <label for="form-r-email">Nome:</label>\n                                <input type="text" class="form-control" id="nome" name="nome" placeholder="Seu nome">\n                            </div>\n                            <div class="form-group">\n                                <label for="form-r-email">Email:</label>\n                                <input type="email" class="form-control" id="email" name="email"\n                                    placeholder="Seu email">\n                            </div>\n                            <div class="form-group">\n                                <label for="form-r-senha">Senha:</label>\n                                <input type="password" class="form-control" id="senha" name="senha"\n                                    placeholder="Sua senha">\n                            </div>\n                            <!-- TODO implementar -->\n                            <div class="form-check">\n                                <input type="checkbox" class="form-check-input" id="exampleCheck2">\n                                <label class="form-check-label" for="exampleCheck1">Lembre de mim</label>\n                            </div>\n                            <button type="submit" class="btn btn-success">Registrar</button>\n                        </fieldset>\n                        <div>\n                            J\xc3\xa1 tem uma conta?\n                            <a href="#" id="logar">Registrar!</a>\n                        </div>\n                    </form>\n                </div>\n            </div>\n
Run Code Online (Sandbox Code Playgroud)\n\n

路由登录.js:

\n\n
module.exports = function(application) {\n    application.get(\'/login\', function(req, res) {\n        console.log(\'Rota pegaPaginaLogin\');\n        application.app.controles.login.pegaPaginaLogin(application, req, res);\n    });\n    application.post(\'/admin/logar\', function(req, res) {\n        console.log(\'Rota /admin/logar\');\n        application.app.controles.login.logaUsuario(application, req, res);\n    });\n\n    application.post(\'/registrar\', function(req, res) {\n        console.log(\'Rota registrar\');\n        console.log(\'req.body >>>\' + req.body);\n        res.status(500).send(\'testing\');\n        application.app.controles.login.registraUsuario(application, req, res);\n    });\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

控制器注册器Usuario:

\n\n
module.exports.registraUsuario = function (application, req, res) {\n    console.log(\'Controller registraUsuario\');\n    console.log(\'REQ....\' + req)\n    var usuario = req.body;\n\n    /** Valida\xc3\xa7\xc3\xa3o do formul\xc3\xa1rio */\n    //TODO validar formatos\n    req.assert(\'nome\', \'Nome \xc3\xa9 obrigat\xc3\xb3rio\').notEmpty();\n    req.assert(\'email\', \'Email \xc3\xa9 obrigat\xc3\xb3rio\').notEmpty();\n    req.assert(\'senha\', \'Senha \xc3\xa9 obrigat\xc3\xb3rio\').notEmpty();\n\n    var errosValidacao = req.validationErrors();\n\n    console.log(errosValidacao);\n\n    if (errosValidacao) {\n        res.render(\'login\', {\n            validacao: errosValidacao,\n            usuario: usuario\n        });\n        return;\n    }\n\n    /** Conex\xc3\xa3o com banco */\n    var conexao = application.config.conectarBD();\n    var novoUsuario = new application.app.modelos.UsuariosModel(conexao);\n\n    novoUsuario.getUsuario(usuario, function (error, result) {\n        console.log(result);\n\n        novoUsuario.novoUsuario(usuario);\n    });\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

型号 Usuarios型号:

\n\n
function UsuariosModel(conexao) {\n    this._conexao = conexao;\n}\n\n/** Se usu\xc3\xa1rio existir, retorna a id_usuario */\nUsuariosModel.prototype.getUsuario = function (usuario, callback) {\nconsole.log(\'Model getUsuario\');\nthis._conexao.query(\'SELECT id_usuario FROM usuarios WHERE email = "\' + usuario.email + \' and senha = "\' + usuario.senha + \'"\');\n
Run Code Online (Sandbox Code Playgroud)\n\n

}

\n\n
UsuariosModel.prototype.novoUsuario = function (usuario, callback) {\n    var hoje = Date.now();\n    this._conexao.query(\'INSERT INTO usuarios SET ?\', usuario, callback);\n}\n\nmodule.exports = function () {\n    return UsuariosModel;\n};\n
Run Code Online (Sandbox Code Playgroud)\n\n

安慰:

\n\n

在此输入图像描述

\n\n

错误:

\n\n

在此输入图像描述

\n\n

在此输入图像描述

\n

Ste*_*gin 5

您的服务器代码未调用response.send.

将您的代码替换为以下代码以进行测试:

application.post('/registrar', function(req, res) {
        console.log('Rota registrar');
        console.log('REQ.query....' + req.params.name);
        res.status(500).send('testing');
        //application.app.controles.login.registraUsuario(application, req, res);
    });
Run Code Online (Sandbox Code Playgroud)

在 中registraUsuario,您需要send使用响应/状态代码进行调用。您的客户端将阻塞,直到调用发送或发生超时。