*개요
nodejs에 database를 연동해서 구동시켜봅니다. 단순히 서버에서 요청했던 내용들을 이제 직접 sql을 이용해서 저장하고 실행해봅니다.
* 데이터 베이스로 조회하기
사용하고 싶은 데이터베이스를 dependencies에 등록합니다. 이번 실습에서는 mysql을 이용합니다.
//index.ejs
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="login" method="post">
이름 : <input type="text" name="user_name"/><br/>
<button type="submit">로그인</button>
</form>
</body>
</html>
로그인 화면을 만듭니다. 여기서 로그인하는 user_name은 세션에 저장할 예정입니다.
//controller.js
app.post("/login", urlencodedParser, function(req, res){
var user_name = req.body.user_name;
req.session.user_name = user_name;
res.redirect("main");
});
요청 세션에 user_name을 저장합니다.
//controller.js
var mysql = require("mysql");
var conn_info = {
host: "localhost",
port: "3306",
user: "root",
password: "1234",
database: "GuestBookB"
}
데이터베이스 정보를 설정합니다.
실제 설치된 mysql의 접속정보입니다. 각 환경에 맞게 설정해줍니다.
app.get("/main", function(req, res) {
var conn = mysql.createConnection(conn_info);
var sql = "select guestbook_name, guestbook_content from GuestBookTable order by guestbook_idx desc";
conn.query(sql, function(error, rows) {
var render_data = {
"rows": rows
}
res.render("main.ejs", render_data);
});
});
책과 댓글을 조회하는 요청입니다.
mysql.Connection으로 접속 db를 설정했던 conn_info를 연결합니다.
conn.query로 sql문을 실행합니다. 콜백함수로 결과를 rows에 담습니다.
app.post("/save_guestbook", urlencodedParser, function(req, res) {
var user_name = req.sesion.user_name;
var content = req.body.content;
var conn = mysql.createConnection(conn_info);
var sql= "insert into GuestBookTable(guestbook_name, guestbook_content) values(? ,?)";
var input_data = [user_name, content];
conn.query(sql, input_data, function(error) {
conn.end();
res.redirect("main");
});
});
책에 따른 댓글을 저장하는 요청입니다.
마찬가지로 데이터베이스 접속정보를 mysql.createConnection()으로 연결합니다.
또한 sql을 실행하는데, 조회가 아니라 insert이기 때문에 input_data로 값을 넣어주어야 한다.
따로 콜백받는 데이터는 없고 conn.end()로 종료합니다.
//main.ejs
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="save_guestbook" method="post">
<textarea name="content" style="width:300px; height:50px"></textarea>
<br/>
<button type="submit">저장</button>
</form>
<% for(var obj of rows){ %>
작성자 : <%= obj.guestbook_name %><br/>
내용 : <%= obj.guestbook_content %><br/>
<hr/>
<% } %>
</body>
</html>
댓글작성이 완료되면, for문을 통해서 각 작성자와 내용을 표시합니다.
*정리
mysql을 사용하기 위해 db 접속 정보를 정의한다.
mysql.createConnection으로 접속 정보를 연결하고 sql을 실행한다.
반응형
'학습 > Node.js' 카테고리의 다른 글
mocha, should, supertest 사용하기 (0) | 2022.01.15 |
---|---|
강의 후기 (0) | 2022.01.15 |
node js 파라미터, 쿠키, 세션 이용하기 (0) | 2022.01.15 |
node express 모듈 사용하기 (0) | 2022.01.15 |
node js 기본 모듈 (0) | 2022.01.15 |