서버/NodeJS

node.Js에서 mysql데이터베이스 사용하기

닉네임못짓는사람 2021. 2. 1. 06:56
반응형

nodejs서버에서는 데이터베이스와 연결해 데이터를 관리할 수 있는데, 이 글에서는 mysql을 사용해보자.

먼저, mysql모듈을 프로젝트 폴더에 추가시켜주어야 한다.

npm install -S mysql2

mysql모듈은 사용 시 오류가 발생해서(이유는 잘 모르겠음) mysql2모듈을 사용했다.

기본적인 사용법은 둘 다 동일하다고 한다.

 

이렇게 모듈을 프로젝트폴더에 추가시켜주었다면 실제 코드에서 모듈을 불러와서 사용해보도록 하자.

const dbsecret = require('./db.json')
var mysql = require('mysql2');
var db = mysql.createConnection(
  dbsecret
);

mysql을 사용하려면 모듈을 불러온 뒤, 우리가 사용할 db서버와 연결시켜주어야 한다.

이때 사용하는 것이 createConnection인데, 저 괄호 안에 정보를 입력해주면 된다.

  "host"      : "localhost",
  "user"      : "root",
  "password"  : "123123",
  "database"  : "mydb"

필요한 정보는 위와 같이 host, user, password, database이름인데, 깃허브 등에 올릴 때 보안을 위해 따로 파일에 기록했다.

그리고 그 파일을 main.js에서 불러와서 createConnection에 전해준 것을 볼 수 있다.

 

db서버와 연결을 완료했다면, 이제 실제로 db에 명령을 보내보자.

이 때 사용할 키워드는 query이다.

db.query(`SELECT *FROM 테이블명`), function(err, result){
	코드
});

query를 사용하면 db에 요청을 보내고 SELECT처럼 리턴이 있는 경우 위와 같이 함수를 사용해 result변수에 담아줄 수 있다.

또한 에러가 발생하는 경우에는 err변수에 에러내용이 저장된다.

 

이 db.query를 사용할 때 주의해야할 점은 작업이 비동기적으로 이루어진다는 점이다.

때문에 db에서 데이터를 받아와서 동기적으로 사용해야 한다면 위와 같이

함수 내부에 코드를 작성해 사용하거나 작업을 동기적으로 처리하는 방법을 사용해야 한다.

nodejs에서 mysql을 동기적으로 사용하는 방법은 promise를 사용하는 방법이 있는데, 이 글에서 설명하지는 않겠다.

var express = require('express');
var http = require('http');
var bodyParser = require('body-parser');
const dbsecret = require('./db.json')
var mysql = require('mysql2');
var app = express();
var db = mysql.createConnection(
	dbsecret
);
app.use(bodyParser.urlencoded({extended: false}))

app.get('/ge', (req, res) => {
  db.query(`CREATE TABLE exam(
    num INT AUTO_INCREMENT NOT NULL primary key,
    id VARCHAR(10) NULL,
    pass VARCHAR(10) NULL);`)
  db.query(`DESC exam`, function(err, result){
    res.send(result)
  });
});

app.listen(3000, () =>{
  console.log(`서버 실행, 포트번호 3000`)
});

이런 식으로 db에 명령을 보내서 처리하면 아래 같은 결과가 표시된다.

desc는 table의 형태를 알려주는 명령어인데, 자세히 보면 위에서 설정한 table과 형태가 동일하다.

명령 프롬프트에서 확인하면 이런 형태가 된다.

반응형

'서버 > NodeJS' 카테고리의 다른 글

Node.js에서 https통신  (0) 2021.05.31