0.0.3 • Published 12 years ago

mysql-transactions v0.0.3

Weekly downloads
1
License
-
Repository
github
Last release
12 years ago

node-mysql-transactions

dependencies

npm install mysql

install

npm install mysql-transactions

tutorial

Seeing as how you're viewing a module named mysql-transactions I'm going to assume you understand the little bits and jump right into coding a simple demo. Cool? Cool.

the schema

Before we get started this is the structure we're going to be using for this demo.

CREATE TABLE users (

    id      INT PRIMARY KEY AUTO_INCREMENT,
    name    VARCHAR(40) NOT NULL

);
game time
var async = require('async');

var transactions = require('mysql-transactions')({
    user: 'hamburglar',
    password: 'omnomnomnomnom',
    database: 'playhouse'
});

As you can see, we're using the async module as well. But the section to note is require('mysql-transactions')({ ... });. Here we must pass in our connection options (again?). These options are the same ones used in your non-transactional queries i.e. the options/string supplied to mysql.createConnection.

async.series(
[
    function(done) {
        transactions.begin(done);
    },

Okay, so now that we have our connection options ready we need to kick off the transactions process which we do by calling transactions.begin(done). Note that we passed in done to continue the async flow.

    function(done) {
        transactions.query('insert into users set ?', { name: 'John Smith' }, function(err, result) {
            if (err) return done(err);

            done(null, result.affectedRows ? true : false);
        });
    }

With the transactions process open we can query the database like normal.

],

    function(err, results) {
        if (err) {
            transactions.rollback();
            return console.log(err);
        }

        transactions.commit(function(err, result) {
            if (err) return console.log(err);

            console.log('done');
        });
    }
);

The last step in the process is to either commit or rollback the transactions. One must be called to close the connection. While this example shows transactions.commit(function...), it is not necessary to provide a function to commit/rollback or begin for that matter.

full demo

var async = require('async');

var transactions = require('mysql-transactions')({
    user: 'hamburglar',
    password: 'omnomnomnomnom',
    database: 'playhouse'
});



async.series(
[
    function(done) {
        transactions.begin(done);
    },

    function(done) {
        transactions.query('insert into users set ?', { name: 'John Smith' }, function(err, result) {
            if (err) return done(err);

            done(null, result.affectedRows ? true : false);
        });
    }
],

    function(err, results) {
        if (err) {
            transactions.rollback();
            return console.log(err);
        }

        transactions.commit(function(err, result) {
            if (err) return console.log(err);

            console.log('done');
        });
    }
);