var logMsg = {

signUp : function () {

return 'SignUp - ' + new Date() +  ' : '

}

}


var transActionObj = {

db : undefined,

query : undefined,

data : [],

renderPage : undefined,

logMsg : logMsg.signUp(),

chainMethod : function () {

}

}


var transActioner = function(req, res, dataObj) {


dataObj.db.beginTransaction(function(err) {

if (err) {

throw err;

}

dataObj.db.query(dataObj.query, dataObj.data, function (err, result) {

if (err) {

console.error(err);

dataObj.db.rollback(function () {

console.error('rollback error');

throw err;

});

}// if err

console.log('insert transaction log');

var log = {logid : dataObj.logMsg + ' : ' + req.body.email};

dataObj.db.query('insert into log set ?', log, function (err, result) {

if (err) {

console.error(err);

dataObj.db.rollback(function () {

console.error('rollback error');

throw err;

 });

 }// if err

dataObj.db.commit(function (err) {

if (err) {

console.error(err);

dataObj.db.rollback(function () {

  console.error('rollback error');

  throw err;

});

}// if err


if (dataObj.chainMethod != undefined)

{

dataObj.chainMethod();

} else {

res.render(dataObj.renderPage);

}


});// commit

});// insert into log

});// inset into users

}); // begin trnsaction


}


var user = {

email:req.body.nickname,

password:req.body.password

};


var transActionObj = {

db : db,

query : 'insert into user set ?',

data : [user],

renderPage : undefined,

logMsg : logMsg.signUp(),

chainMethod : function () {

var >

master : user.email,

title : 'default'

};


var transActionObj = {

db : db,

query : 'insert into category set ?',

data : [data],

renderPage : 'login.html',

logMsg : logMsg.signUp(),

chainMethod : undefined

};


transActioner(req, res, transActionObj);

}

};


transActioner(req, res, transActionObj);


쿼리 무한 체인 가능, 음하하