Problem with Controllers

Asked

Viewed 35 times

0

I’m having trouble implementing the MVC standard presenting the error below:

Typeerror: application.app.controllers.admin.noticias_save is not a Function

const { check, validationResult } = require('express-validator')
module.exports.formulario_inclusao_noticia = function(application, req, res){
    res.render('admin/form_add_noticia',{validacao:{},noticia:{}});
}

module.exports.noticias_salvar = [
 
        check('titulo','Título é obrigatório').not().isEmpty(),
        check('resumo','Resumo é obrigatório').not().isEmpty(),
        check('resumo','Resumo tem que ter entre 10 a 100 caracteres').isLength({ min: 10, max: 100 }),
        check('autor','Autor tem que ter entre 10 a 100 caracteres').isLength({ min: 10, max: 100 }),
        check('autor','Autor é obrigatório').not().isEmpty(),
        check('data_noticia','Data é obrigatório').not().isEmpty(),
        check('noticias','Noticia é obrigatória').not().isEmpty()
      ], (req, res) => {
        let noticia = req.body
     
        const errors = validationResult(req);
     
        console.log(errors);
     
        if(!errors.isEmpty()){
          return res.render('admin/form_add_noticia', { validacao: errors.array(), noticia: noticia });
          
        }
        
        let conn = app.config.dbConnection();
        let noticiasModel = new app.app.models.NoticiasDAO(conn)
     
        noticiasModel.salvarNoticia(noticia, (error, result) => {
          res.redirect('/noticias')
        })
}

module.exports = (application) => {
 
  application.get('/formulario_inclusao_noticia', (req, res) => {
    res.render('admin/form_add_noticia',{validacao:{},noticia:{}});
    application.app.controllers.admin.formulario_inclusao_noticia(application, req, res);
  });
 
  application.post('/noticias/salvar', (req, res) => {
     application.app.controllers.admin.noticias_salvar(req, res); 
  });
}

1 answer

0


Your options to check sane middlewares therefore must be declared next to the routes:

application.post('/noticias/salvar', [
  check('titulo','Título é obrigatório').not().isEmpty(),
  check('resumo','Resumo é obrigatório').not().isEmpty(),
  check('resumo','Resumo tem que ter entre 10 a 100 caracteres').isLength({ min: 10, max: 100 }),
  check('autor','Autor tem que ter entre 10 a 100 caracteres').isLength({ min: 10, max: 100 }),
  check('autor','Autor é obrigatório').not().isEmpty(),
  check('data_noticia','Data é obrigatório').not().isEmpty(),
  check('noticias','Noticia é obrigatória').not().isEmpty()
], (req, res) => {
  application.app.controllers.admin.noticias_salvar(req, res);
});

And then the function noticias_salvar becomes a function:

module.exports.noticias_salvar = (req, res) => {
  let noticia = req.body

  const errors = validationResult(req);

  console.log(errors);

  if(!errors.isEmpty()){
    return res.render('admin/form_add_noticia', { validacao: errors.array(), noticia: noticia });
  }

  let conn = app.config.dbConnection();
  let noticiasModel = new app.app.models.NoticiasDAO(conn)

  noticiasModel.salvarNoticia(noticia, (error, result) => {
    res.redirect('/noticias')
  });
};

Browser other questions tagged

You are not signed in. Login or sign up in order to post.