3
respostas

Mysql não salva a data anterior a digitada - Nodejs/sailsjs

Pessoal, estou utilizando o Sails Js pra criar uma aplicação, e na mesma, necessito gravar um período no banco de dados, com data inicial e data final. O problema é que o node recebe a data com o valor correto, mas quando salva no banco ele subtrai um dia. Como soluciono isso?

Obrigado!

3 respostas

Opa, acho que um trecho de código é necessário para tentarmos achar o problema.

Claro Alberto!

Meu controller "PeriodoController.js"

create: function(req, res, next) {

        if(req.param('data_final') < req.param('data_inicial')) {
            req.flash('erro', '<div class="alert alert-danger">A data final não pode ser menor que a inicial.</div>');
            res.redirect('/periodo/new');
        }else{

            console.log(req.param('data_inicial'));
            console.log(req.param('data_final'));

            var dados_periodo = {
                data_inicial: req.param('data_inicial'),
                data_final: req.param('data_final')
            } 

            Periodo.create(dados_periodo, function periodoCreated(err, periodo){
                if(err) {
                    console.log(err);
                    return res.redirect('/periodo/new');
                }
                res.redirect('/periodo');
            });
        }
    },

Model Periodo.js

module.exports = {

  attributes: {
      data_inicial: {
        type: 'date',
        required: true
      },
      data_final: {
        type: 'date',
        required: false
      },
      alunoscurso: {
        collection: 'alunocurso',
        via: 'idperiodo'
      }
  }
};

View/Periodo/new.ejs

<form action="/periodo/create" method="POST" class="form-periodo-new">
        <h2>Novo período </h2>
        <%- req.flash('erro') %>
        <label>Data inicial:</label>
        <div class="form-group">
            <input type="date" name="data_inicial" id="data_inicial" class="form-control" placeholder="Data inicial do peíodo" value="" />
        </div>
        <label>Data final:</label>
        <div class="form-group">
            <input type="date" name="data_final" id="data_final" class="form-control" placeholder="Data final do período" value="" />
        </div>
        <div class="form-group">
            <input type="submit" name="save" class="btn btn-default pull-right" value="Salvar" />
        </div>
    </form>

Obrigado por ter respondido!

Oi Flavio, perdão pela demora. Olhando o código não consegui identificar.. se a data está correta, não vi motivos para ela ir com 1 dia a menos. Se for um projeto que pode ser compartilhado, pode colocar ele no github e colocar o link aqui?