Advertisement
davewelsh79

node-mysql error handling

Oct 20th, 2016
386
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. router.post('/notes2', function(req, res) {
  2.  
  3.     var note_post = {
  4.         title: req.body.title,
  5.         body: req.body.body,
  6.         author_id: req.body.author_id
  7.     };
  8.  
  9.     // get a connection from the pool
  10.     createConnection(function(err, connection) {
  11.         if (err) {
  12.             console.log(err);
  13.             res.send({ success: false, message: 'database error', error: err });
  14.             return;
  15.         }
  16.  
  17.         // set up error listener for the connection
  18.         connection.on('error', function(err) {
  19.             console.log(err);
  20.             res.send({ success: false, message: 'database error', error: err });
  21.             return;
  22.         });
  23.  
  24.         // create a common rollback function
  25.         var rollback = function(err, message) {
  26.             console.log(err);
  27.             connection.rollback(function() {
  28.                 connection.release();
  29.             });
  30.             res.send({ success: false, message: message, error: err });
  31.         }
  32.  
  33.         // start a transaction
  34.         connection.beginTransaction(function(err) {
  35.             if (err) {
  36.                 return rollback(err, 'start transaction error');
  37.             }
  38.  
  39.             // execute a query
  40.             connection.query("INSERT INTO notes SET ?", note_post, function(err, result) {
  41.                 if (err) {
  42.                     return rollback(err, 'query error');
  43.                 }
  44.  
  45.                 var insertId = result.insertId;
  46.  
  47.                 // execute another query
  48.                 connection.query("UPDATE authors SET num_notes = num_notes + 1 WHERE id = ?", req.body.author_id, function(err, result) {
  49.                     if (err) {
  50.                         return rollback(err, 'query error');
  51.                     }
  52.  
  53.                     // commit the transaction
  54.                     connection.commit(function(err) {
  55.                         if (err) {
  56.                             return rollback(err, 'commit error');
  57.                         }
  58.  
  59.                         connection.release();
  60.  
  61.                         res.setHeader('Location', '/test/notes/' + insertId);
  62.                         res.status(201).send({ success: true });
  63.                     });
  64.                 });
  65.             });
  66.         });
  67.     });
  68. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement