galo2324
galo2324

Reputation: 129

Passing Data between app.post to app.get in nodejs

I am fairly new to nodejs and express. I am using nodejs and handlebars to create a simple back end CRUD App. Right now I am stuck on how to pass the value from a form I created in handlebars to an app.get function in my index.js file so inside my app.get function I can use the value to do a database query. After I do the query I want to display the results using app.get and render it to web page.

This is my Handlebars code:

<section id="main" class="wrapper">
    <div id="view" class="container">
        <section id="main" class="wrapper">
            <div id="class" class="container">
                <div class="card-body">
                    <form action="/getid/submit" method="POST">
                        <div class="form-group">
                            <label for="id"></label>
                            <input type="text" class="form-control" id="id" name="id"
                                placeholder="Enter ID">
                        </div>
                        <button type="submit" class="btn btn-primary">Enter ID</button>
                    </form>
                </div>
            </div>

        </section>

This is the post function in index.js

     app.post('/getid/submit',(req,res)=>{
      const id = req.body.id;
      console.log(id);
      res.redirect('page1');
      });

This is the app.get function:

app.get('/view/id',(req,res)=>{
  
    //id = ?
    var sql = `SELECT * FROM class WHERE Id =${id}`;
    db.query(sql,function (err,result){
        if(err) throw error;
        res.render('page2',{title: 'test', items: rows})
    });

});

My main question would be How do I pass the value that I am getting from the app.post form to my app.get function so I can run the query with that ID and render the values to the webpage. THank you in advance.

Upvotes: 0

Views: 1394

Answers (1)

Nghia Pham Tuan
Nghia Pham Tuan

Reputation: 109

The id you need to achieve is in request parameters. So you should try:

app.get('/view/:id', (req, res) => {
  //id = ?
  const id = req.params.id

  var sql = `SELECT * FROM class WHERE Id =${id}`;
  db.query(sql, function (err, result) {
    if (err) throw error;
    res.render('page2', { title: 'test', items: rows })
  });
});

Upvotes: 1

Related Questions