본문 바로가기
학습/Node.js

node js 데이터베이스 이용하기

코동이 2022. 1. 15.

*개요

 

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