nodejs service

nodejs,service层模板
需要的模块包括:
var signDao = require('../dao/signDao.js');
var proxy = require('EventProxy'); //EventProxy是一个通过控制事件触发顺序来控制业务流程的工具。
var mysql = require('../util/MySQL')


方法:
exports.checkUser = function(name, pwd, callback) {
    var ep = new proxy();
    var result_code = 0;
    var errMsg = "";
    var connection;
    ep.emitLater('start');
    ep.on('start', function() {
//链接数据库
        mysql.pool.getConnection(ep.done('link'));
    });
    ep.on('link', function(conn) {
        connection = conn;
//开启事务
        connection.beginTransaction(ep.done('check'))
    });
    ep.on('check', function() {
        signDao.getUserInfo(connection, name, ep.done('setData'));
    });
    ep.on('setData',  function(data) {
        if (data.length > 0) {
            if (pwd != data[0].password) {
                result_code = 1;
                errMsg = "用户名或者密码错误";
            } else {
                result_code = 2;
                errMsg = "用户不存在";
            }
        }
//对数据进行的更新的操作一定要先提交,失败了可以回滚
        ep.emit('commit');
    })
    ep.on('commit', function() {
        ep.emit('finish');
    })
    ep.on('finish', function() {
//释放与数据库的链接
        connection.release();
        callback({
            result_code: result_code,
            errMsg: errMsg
        })
    })
    ep.fail(function(err) {
        //执行更新操作则需要回滚
        if (connection != null) {
            connection.rollback(function (err) {
                if (err) {
                    return callback(err);
                }
//释放与数据库的链接
                connection.release();
                callback(error);
            });
        } else {
            callback(error);
        }
    })
}

猜你喜欢

转载自blog.csdn.net/id_no_chinese/article/details/72650000