WEB/node.js

node.js 와 mysql 연동하여 웹 페이지 만들기 - 생활코딩(21/1/11~)

민철킹 2021. 1. 21. 15:22

저번 node.js 강의를 끝마친 후, 다른 강의를 찾아보던 중 node.js와 mysql을 연동하는 강의에 관심이 생겨서 공부를 시작했다.

데이터베이스에 저장되어 있는 정보를 가져와 node.js를 통하여 동적으로 웹페이지를 만들 수 있다.

이렇게 node.js를 통해 동적으로 웹페이지를 만들고, 우리는 안전하게 데이터베이스에 새로운 정보를 입력하는 것만으로 새로운 정보가 추가된다.

mysql을 설치하고 npm의 mysql모듈을 사용하여 객체화시켜, 함수를 통해 쿼리문을 실행하여 한번에 가져온다.

 

 

 

수업 내용 필기

---------------------------------------------------------------------------------------------------------------------------------

직접 mysql에 패스워드를 입력하고 데이터베이스를 선택하고
테이블을 출력하는 복잡한 과정을 
npm의 mysql모듈을 사용하여 비밀번호와 사용할 db를 객체로
만들어 전달한 후 , 쿼리문을 실행하여 한번에 가져올 수 있다.
==> 이를 응용하면 우리가 하고자 하는 작업을 node.js를 통해
자동화하여 데이터를 가져올 수 있다.
.query()메소드의 두 번째 인자로 콜백 함수를 넣어야 하는데
콜백 함수의 인자는 error와 result이다. 에러가 발생하면
error에 에러 메시지가 담기고, 쿼리문을 실행하는 데 성공하면
topics에 그 쿼리문의 결과가 담김.

쿼리문에 id값을 직접 ${queryData.id}로 주면 db특성에 의해
공격받을 수 있음.
따라서 ?로 주고, 두 번째 인자에 배열에 queryData.id를 담아 주면
안전하다. 배열안의 값이 sql문의 ?에 자동으로 치환되어 들어감.
그때 공격의 의도가 있는 것들을 세탁해주므로 보안성이 더 좋아짐.

result.insertId ==> 삽입된 행에 대한 id값을 가져옴

 

 

 

var mysql = require('mysql');
var db = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '000000',
    database: 'opentutorials'
});
db.connect();
db.query(`SELECT * FROM topic`, function(error, topics) {
                if (error) {
                    throw error;
                }

예시로 소스코드 중 하나를 가져왔다.

db라는 객체 안에는 호스트명, 유저, 패스워드, 사용할 데이터베이스 이름이 들어가 있다.

mysql 변수 안에 우리가 npm으로 설치한 mysql모듈을 담고, 이를 통해 db와 연결한다.

다음으로 아래의 db.query(쿼리문, 콜백 함수)를 통하여 쿼리문을 실행한다.

 

 

 

전체 소스 코드는 내 깃허브에 올려두었다. github.com/MinChul-Son/node.js-with-mysql/tree/master

 

MinChul-Son/node.js-with-mysql

Contribute to MinChul-Son/node.js-with-mysql development by creating an account on GitHub.

github.com

 

반응형

'WEB > node.js' 카테고리의 다른 글

node.js- 생활코딩 (21/1/1)  (0) 2021.01.21
node.js - 생활코딩 (2020/12/31)  (0) 2021.01.21
node.js - 생활코딩 (2020/12/30)  (0) 2021.01.21
node.js - 생활코딩 (2020/12/29)  (0) 2021.01.21