Pass parameters on express redirect + Node + ejs

Asked

Viewed 1,128 times

1

Hello, I want to pass parameters in redirect the same way I do in render method, I need it redirect because I do not want to render a page but redirect to the API route that is already rendering the page with the data I need.

It has how I pass a parameter in res.redirect to then check on the front end if it exists and print the message in which I pass as parameter the idea would be similar what this below has some way to do this.

Aluno.findAndCount({ where: { AL_TURMA: id } }).then((alunos) => {

            if (alunos.count === 0) {
                Turma.destroy({ where: { TR_ID: id } })
                res.status(200).redirect('/turmas', /*msg: sucesso*/);
            } else {
                res.status(200).redirect('/turmas', /*{ msg: 'Existem alunos nesta turma. Não é possivel excluir' }*/)
            }
        })

Is there any way to do this ?

1 answer

0

You can use an API called connect-flash which allows storing messages that should be informed to the user. When there is an error, Cvoce informs the flash and redirects to a given route and after the information is rendered and will be automatically deleted from the flash object. I’ll show you an example that you can apply to your project.

  //Apos instalar como dependencia no seu projeto, faca:
  const flash = require("connect-flash");
  const express = require("express");
  const app = express();

  // ...

  app.use(flash()); // aplicando o connect-flash na sua aplicacao.


  // *********** Exemplo no controller ******************
  // neste exemplo, vamos supor que tenho um controller que faz um cadastro de cliente. 
  // se houver algum erro na hora de criar cadastro e eu quiser redirecionar para esta rota, 
  // o req.flash("error") sera substituido pelo valor definido no metodo que redirecionou.

  // controller para a rota '/cadastro'
  exports.cadastrar = (req, res) => {
    res.render("view/cadastro", {
     error: req.flash("error"), 
   });
  };

  // controller para a rota 'post/cadastrar'
  exports.postCriarCadastro = (req, res) => {
    // ...
    if (error === true) {
     // se houve um erro, defino uma uma mensagem para o flash para ser exibido no redirecionamento.
     // informamos ao req.flash('variavel', 'mensagem de erro').
     req.flash("error", "Email ja em uso. Tente outro endereco de email!");
     res.redirect("/cadastro"); // vou redirecionar para a rota de cadastro
    }
  };

Browser other questions tagged

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