Home Catch MySQL error when record does not exist in NodeJS
Reply: 2

Catch MySQL error when record does not exist in NodeJS

Cadmos
1#
Cadmos Published in 2017-12-07 18:47:41Z

I am trying to figure out how I can catch an error when a requested id is not found in the Database records.

My code is

router.get('/users/:id', function(req, res) {

    getId = req.params.id

    db.con.query('SELECT * FROM employees where id=?', getId, function(err, results) {

       if (err) {
            console.log('error in query')
            return

        } else {
            obj = {
                id: results[0].id,
                name: results[0].name,
                location: results[0].location
                //error should be catched here when a requested results[0].id is not found
            }
            res.render('showuser');
        }
    })

});

In console I get the following error when a non-existed id is requested as it should be, however I cannot catch this error programatically.

throw err; // Rethrow non-MySQL errors
^
ReferenceError: id is not defined
at Query._callback (C:\NodeJS\CRUD\CRUD-4\routes\add.js:21:13)

Node: v8.8.0

Express: v4.15.5

Chris Thompson
2#
Chris Thompson Reply to 2017-12-07 18:52:40Z

Try this:

try{
  obj = {
     id: results[0].id,
     name: results[0].name,
     location: results[0].location
  }
}catch(err){
  //handle error
}

try {...}catch... is how you handle exceptions in JavaScript. You can read more about it here.

Aikon Mogwai
3#
Aikon Mogwai Reply to 2017-12-07 18:59:41Z
// Error handler
app.use(function(err, req, res, next) {
  res.status(500).end(err.message);
}); 
...
router.get('/users/:id(\\d+)', function(req, res, next) {
    var id = req.params.id;

    db.con.query('SELECT * FROM employees where id= ?', id, function (err, results) {
       if (err) 
          return next(err);

       if (results.length == 0)
          return next(new Error('Incorrect id: ' + id));

        obj = {
            id: results[0].id,
            name: results[0].name,
            location: results[0].location
        }
        res.render('showuser', obj);
    });
})
You need to login account before you can post.

About| Privacy statement| Terms of Service| Advertising| Contact us| Help| Sitemap|
Processed in 0.30683 second(s) , Gzip On .

© 2016 Powered by mzan.com design MATCHINFO