[NodeJS] - MySQL 연동하기(Connection Pool), select문
○ NodeJS - MySQL 연동하기(Connection Pool), select문 |
NodeJS-MySQL은 오픈소스로 아래에 코드들이 공개되어 있다 https://github.com/mysqljs/mysql#pooling-connections // app.js // MySQL 데이터베이스를 사용할 수 있도록 하는 MySQL 모듈 불러오기 // 당연히 사용전에 npm install mysql --save 로 모듈 설치하기 var mysql = require('mysql'); // MySQL 데이터베이스 연결 설정(커낵션 풀) var pool = mysql.createPool({ connectionLimit : 100, host : 'nodejs-rds-mysql.???.ap-northeast-2.rds.amazonaws.com', // aws rds 사용 부분 user : '아이디 입력', password : '비밀번호 입력', database : '데이터베이스명 입력', debug : false, port : '3306', charset : 'utf8' }); // 'pool.getConnection() -> connection.query() -> connection.release()' 코드 흐름을 따름 // 예를들어 공지사항 DB 데이터를 불러오는 부분 router.route('/process/notice').get(function(req, res) { // 커넥션 풀에서 연결 객체를 가져옴 pool.getConnection(function(err, conn) { if (err) { if (conn) { conn.release(); // 반드시 해제해야 함 } callback(err, null); return; } console.log('데이터베이스 연결 스레드 아이디 : ' + conn.threadId); // SQL 문을 실행함 const sql = 'select noticeNo, noticeTitle, noticeDate from notice order by noticeNo desc'; conn.query(sql, function(err, result) { conn.release(); // 반드시 해제해야 함(해제안할 시 DB연결 수가 계속 늘어남!!!) // connectionLimit 값이 작을 경우 초과해서 서버 터짐 console.log(result); console.log(result[0].noticeTitle); // 데이터를 잘가져왔나 테스트용 출력 // notice.ejs 로 userSessionId와 notice_result를 같이 가져감 res.render('notice.ejs', {userSessionId : req.session.userID, notice_result: result}); }); }); }); // notice.ejs(가져온 세션값 userSessionId 와 DB에서 불러온 데이터 notice_result 로 출력) <div class="sideNavProfile"> <img src="../public/img/profile.png"> <!-- db 유저 아이디 세션처리한거 가져오기 --> <% if(userSessionId != null) { %> <p><span id="sidenav_nickname"><%= userSessionId %></span>님 방갑습니다.</p> <% } else { %> <p><span id="sidenav_nickname">사용자</span>님 방갑습니다.</p> <% } %> </div> <table class="noticeTable"> <colgroup> <col width="50"> <col width="*"> <col width="150"> </colgroup> <thead> <tr> <th><span>번호</span></th> <th><span>제목</span></th> <th><span>등록일</span></th> </tr> </thead> <tbody> <% for(var i=0; i< notice_result.length; i++) {%> <tr> <td class="text-center"><%= notice_result[i].noticeNo %></td> <td id="td_title"><a href="/process/notice/<%=notice_result[i].noticeNo%>"> <%= notice_result[i].noticeTitle %></a> </td> <td class="text-center"><%= notice_result[i].noticeDate %></td> </tr> <% }; %> </tbody> </table> |