회원 관리에 필요한 기능을 모두 구현했습니다. 다음은 monolithic_members.js 파일의 전체 코드입니다.

    코드 5-19 monolithic_members.js 전체 코드

    예제 파일 : monolithic_members.js

    const mysql = require('mysql');
    const conn = {
        host: 'localhost',
        user: 'micro',
        password: 'service',
        database: 'monolithic'
    };
    
    /**
     * 회원 관리의 각 기능별로 분기
     */
    exports.onRequest = function(res, method, pathname, params, cb) {
    
        switch (method) {
            case "POST":
                return register(method, pathname, params, (response) => {
                                process.nextTick(cb, res, response); });
            case "GET":
                return inquiry(method, pathname, params, (response) => {
                               process.nextTick(cb, res, response); });
            case "DELETE":
                return unregister(method, pathname, params, (response) => {
                               process.nextTick(cb, res, response); });
            default:
                return process.nextTick(cb, res, null);
        }
    }
    
    /**
     * 회원 등록 기능
     * @param method    메서드
     * @param pathname  URI
     * @param params    입력 파라미터
     * @param cb        콜백
     */
    function register(method, pathname, params, cb) {
        var response = {
            key: params.key,
            errorcode: 0,
            errormessage: "success"
        };
    
        if (params.username == null || params.password == null) {
            response.errorcode = 1;
            response.errormessage = "Invalid Parameters";
            cb(response);
        } else {
            var connection = mysql.createConnection(conn);
            connection.connect();
            connection.query("insert into members(username, password) values('" +
                             params.username + "', password('" + params.password +
                             "'));", (error, results, fields) => {
                if (error) {
                    response.errorcode = 1;
                    response.errormessage = error;
                }
                cb(response);
            });
            connection.end();
        }
    }
    
    /**
     * 회원 인증 기능
     * @param method    메서드
     * @param pathname  URI
     * @param params    입력 파라미터
     * @param cb        콜백
     */
    function inquiry(method, pathname, params, cb) {
        var response = {
            key: params.key,
            errorcode: 0,
            errormessage: "success"
        };
    
        if (params.username == null || params.password == null) {
    
            response.errorcode = 1;
            response.errormessage = "Invalid Parameters";
            cb(response);
        } else {
            var connection = mysql.createConnection(conn);
            connection.connect();
            connection.query("select id from members where username = '" +
                             params.username + "' and password = password('" +
                             params.password + "');", (error, results, fields) => {
                if (error || results.length == 0) {
                    response.errorcode = 1;
                    response.errormessage = error ? error : "invalid password";
                } else {
                    response.userid = results[0].id;
                }
                cb(response);
            });
            connection.end();
        }
    }
    
    /**
     * 회원 탈퇴 기능
     * @param method    메서드
     * @param pathname  URI
     * @param params    입력 파라미터
     * @param cb        콜백
     */
    function unregister(method, pathname, params, cb) {
        var response = {
            key: params.key,
            errorcode: 0,
            errormessage: "success"
        };
    
        if (params.username == null) {
            response.errorcode = 1;
            response.errormessage = "Invalid Parameters";
            cb(response);
        } else {
            var connection = mysql.createConnection(conn);
            connection.connect();
            connection.query("delete from members where username = '" + params.username +
                             "';", (error, results, fields) => {
                if (error) {
                    response.errorcode = 1;
                    response.errormessage = error;
                }
                cb(response);
            });
            connection.end();
        }
    }
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.