Экспресс - ожидание POST - PullRequest
       3

Экспресс - ожидание POST

0 голосов
/ 27 января 2019

У меня есть форма для регистрации пользователей, но почтовый запрос не работает

Я проверил bodyparser, груз включает в себя заказ, добавил в форму enctype и все еще не работает

Маршрутработает, потому что он вызывает мой контроллер, но, как вы можете видеть на образе консоли, он идет к контроллеру с неопределенным требованием, параметры URL-адреса althought определены в devtools

server.js:

const express = require('express'); 
const consign = require('consign');
const bodyParser = require('body-parser');
const expressValidator = require('express-validator');
const helmet = require('helmet');
const jwt = require('jsonwebtoken');
require('dotenv-safe').load();  

const app = express(); 
app.set('view engine', 'ejs');
app.set('views', './app/paginas'); 

app.use(express.static('./app/publico/'));
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(expressValidator());

consign(/* {cwd: 'app'} */)
    .include('config/conectarBD.js')
    .then('app/modelos')
    .then('app/controles')
    .then('app/rotas')
    .into(app);


/* consign()
    .include('app/rotas')
    .then('config/conectarBD.js')
    .then('app/modelos')
    .then('app/controles')
    .into(app); */

console.log('Instância do app criada');

module.exports = app;

form.ejs:

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

route login.js:

module.exports = function(application) {
    application.get('/login', function(req, res) {
        console.log('Rota pegaPaginaLogin');
        application.app.controles.login.pegaPaginaLogin(application, req, res);
    });
    application.post('/admin/logar', function(req, res) {
        console.log('Rota /admin/logar');
        application.app.controles.login.logaUsuario(application, req, res);
    });

    application.post('/registrar', function(req, res) {
        console.log('Rota registrar');
        console.log('req.body >>>' + req.body);
        res.status(500).send('testing');
        application.app.controles.login.registraUsuario(application, req, res);
    });
}

регистрация контроллераUsuario:

module.exports.registraUsuario = function (application, req, res) {
    console.log('Controller registraUsuario');
    console.log('REQ....' + req)
    var usuario = req.body;

    /** Validação do formulário */
    //TODO validar formatos
    req.assert('nome', 'Nome é obrigatório').notEmpty();
    req.assert('email', 'Email é obrigatório').notEmpty();
    req.assert('senha', 'Senha é obrigatório').notEmpty();

    var errosValidacao = req.validationErrors();

    console.log(errosValidacao);

    if (errosValidacao) {
        res.render('login', {
            validacao: errosValidacao,
            usuario: usuario
        });
        return;
    }

    /** Conexão com banco */
    var conexao = application.config.conectarBD();
    var novoUsuario = new application.app.modelos.UsuariosModel(conexao);

    novoUsuario.getUsuario(usuario, function (error, result) {
        console.log(result);

        novoUsuario.novoUsuario(usuario);
    });

}

модель UsuariosModel:

function UsuariosModel(conexao) {
    this._conexao = conexao;
}

/** Se usuário existir, retorna a id_usuario */
UsuariosModel.prototype.getUsuario = function (usuario, callback) {
console.log('Model getUsuario');
this._conexao.query('SELECT id_usuario FROM usuarios WHERE email = "' + usuario.email + ' and senha = "' + usuario.senha + '"');

} ​​

UsuariosModel.prototype.novoUsuario = function (usuario, callback) {
    var hoje = Date.now();
    this._conexao.query('INSERT INTO usuarios SET ?', usuario, callback);
}

module.exports = function () {
    return UsuariosModel;
};

Консоль:

enter image description here

Ошибка:

enter image description here

enter image description here

1 Ответ

0 голосов
/ 27 января 2019

Код вашего сервера не звонит 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);
    });

В registraUsuario вам необходимо позвонить send с вашим кодом ответа / статуса. Ваш клиент будет блокироваться до тех пор, пока не будет вызван send или не истечет время ожидания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...