WEB/Node JS

9일차 정리

AKI 2019. 1. 14. 03:37

1. Mysql를 이용해서 사용자 추가


// 사용자 추가 라우팅 함수

router.route('/process/adduser').post(function(req, res) {

console.log('/process/adduser 호출됨.');


    var paramId = req.body.id || req.query.id;

    var paramPassword = req.body.password || req.query.password;

    var paramName = req.body.name || req.query.name;

    var paramAge = req.body.age || req.query.age;

    console.log('요청 파라미터 : ' + paramId + ', ' + paramPassword + ', ' + paramName + ', ' + paramAge);

    

    // pool 객체가 초기화된 경우, addUser 함수 호출하여 사용자 추가

if (pool) {

addUser(paramId, paramName, paramAge, paramPassword, function(err, addedUser) {

// 동일한 id로 추가하려는 경우 에러 발생 - 클라이언트로 에러 전송

if (err) {

                console.error('사용자 추가 중 에러 발생 : ' + err.stack);

                

                res.writeHead('200', {'Content-Type':'text/html;charset=utf8'});

res.write('<h2>사용자 추가 중 에러 발생</h2>');

                res.write('<p>' + err.stack + '</p>');

res.end();

                

                return;

            }

            // 결과 객체 있으면 성공 응답 전송

if (addedUser) {

console.dir(addedUser);


console.log('inserted ' + result.affectedRows + ' rows');

       

        var insertId = result.insertId;

        console.log('추가한 레코드의 아이디 : ' + insertId);

       

res.writeHead('200', {'Content-Type':'text/html;charset=utf8'});

res.write('<h2>사용자 추가 성공</h2>');

res.end();

} else {

res.writeHead('200', {'Content-Type':'text/html;charset=utf8'});

res.write('<h2>사용자 추가  실패</h2>');

res.end();

}

});

} else {  // 데이터베이스 객체가 초기화되지 않은 경우 실패 응답 전송

res.writeHead('200', {'Content-Type':'text/html;charset=utf8'});

res.write('<h2>데이터베이스 연결 실패</h2>');

res.end();

}

}); 

 서버가 시작되었습니다. 포트 : 3000

/process/adduser 호출됨.

요청 파라미터 : MK2, 123456, 미스터M2, 21

addUser 호출됨 : MK2, 123456, 미스터M2, 21

데이터베이스 연결 스레드 아이디 : 10

실행 대상 SQL : insert into users set `id` = 'MK2', `name` = '미스터M2', `age` = '21', `password` = '123456'

OkPacket {

  fieldCount: 0,

  affectedRows: 1,

  insertId: 0,

  serverStatus: 2,

  warningCount: 0,

  message: '',

  protocol41: true,

  changedRows: 0 }

C:\NodeJS_Book\brackets-nodejs\DatabaseExample\node_modules\mysql\lib\protocol\Parser.js:80

        throw err; // Rethrow non-MySQL errors

        ^


ReferenceError: result is not defined

    at C:\NodeJS_Book\brackets-nodejs\DatabaseExample\app8.js:168:31

    at Query.<anonymous> (C:\NodeJS_Book\brackets-nodejs\DatabaseExample\app8.js:271:10)

    at Query.<anonymous> (C:\NodeJS_Book\brackets-nodejs\DatabaseExample\node_modules\mysql\lib\Connection.js:502:10)

    at Query._callback (C:\NodeJS_Book\brackets-nodejs\DatabaseExample\node_modules\mysql\lib\Connection.js:468:16)

    at Query.Sequence.end (C:\NodeJS_Book\brackets-nodejs\DatabaseExample\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24)

    at Query._handleFinalResultPacket (C:\NodeJS_Book\brackets-nodejs\DatabaseExample\node_modules\mysql\lib\protocol\sequences\Query.js:139:8)

    at Query.OkPacket (C:\NodeJS_Book\brackets-nodejs\DatabaseExample\node_modules\mysql\lib\protocol\sequences\Query.js:72:10)

    at Protocol._parsePacket (C:\NodeJS_Book\brackets-nodejs\DatabaseExample\node_modules\mysql\lib\protocol\Protocol.js:278:23)

    at Parser.write (C:\NodeJS_Book\brackets-nodejs\DatabaseExample\node_modules\mysql\lib\protocol\Parser.js:76:12)

    at Protocol.write (C:\NodeJS_Book\brackets-nodejs\DatabaseExample\node_modules\mysql\lib\protocol\Protocol.js:38:16)



 INSERT 데이터는 입력은 되지만 다음으로 진행이 안됨


console.log('inserted ' + addedUser.affectedRows + ' rows');

var insertId = addedUser.insertId;


로 변경하면 정상동작됨





반응형