Advertisement
Guest User

Complex Query Improvement

a guest
Oct 20th, 2016
338
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.  
  25.         var rollback = function(err, res, 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.  
  34.         // start a transaction
  35.         connection.beginTransaction(function(err) {
  36.             if (err) {
  37.                 return rollback(err, res, 'start transaction error');
  38.             }
  39.  
  40.             // execute a query
  41.             connection.query("INSERT INTO notes SET ?", note_post, function(err, result) {
  42.                 if (err) {
  43.                     return rollback(err, res, 'query error');
  44.                 }
  45.  
  46.                 var insertId = result.insertId;
  47.  
  48.                 // execute another query
  49.                 connection.query("UPDATE authors SET num_notes = num_notes + 1 WHERE id = ?", req.body.author_id, function(err, result) {
  50.                     if (err) {
  51.                         return rollback(err, res, 'query error');
  52.                     }
  53.  
  54.                     // commit the transaction
  55.                     connection.commit(function(err) {
  56.                         if (err) {
  57.                             return rollback(err, res, 'commit error');
  58.                         }
  59.  
  60.                         res.setHeader('Location', '/test/notes/' + insertId);
  61.                         res.status(201).send({ success: true });
  62.                     });
  63.                 });
  64.             });
  65.         });
  66.     });
  67. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement