Guest User

Complex Query

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