본문 바로가기

사이드 프로젝트

트렌트 테스트 프로젝트 - 2. express 시작 및 mysql 연결

서버는 간편하게 Node.js 환경에서 개발하기로 했고 express 프레임워크를 사용하기로 회의시간에 결정했다

 

어플리케이션 골격을 만들기 위해 사용한 express-generator

https://expressjs.com/ko/starter/generator.html

 

Express 애플리케이션 생성기

Express 애플리케이션 생성기 애플리케이션의 골격을 신속하게 작성하려면 애플리케이션 생성기 도구인 express를 사용하십시오. 다음의 명령을 이용해 express를 설치하십시오. $ npm install express-gener

expressjs.com

 

해당 페이지를 참조하여 

├── app.js
├── bin
│   └── www
├── package.json
├── public
│   ├── images
│   ├── javascripts
│   └── stylesheets
│       └── style.css
├── routes
│   ├── index.js
│   └── users.js
└── views
    ├── error.pug
    ├── index.pug
    └── layout.pug

 

이런 디렉토리 구조를 갖는 단순한 어플리케이션을 받아왔다

 

bin/www도 잘 모르겠고 pug도 처음보지만 일단 개발해보기루...

모르는 게 아직 너무 많아서 하나하나 다 공부하다가는 아무것도 못하고 지칠 것만 같다ㅋㅋㅋ

 

일단 데이터베이스를 연결해보기로 했다

 

서버의 루트 폴더에 .env라는 이름을 갖는 다음과 같은 파일을 만든다

 

 

물론 env파일을 안쓰고 코드에 바로 비밀번호와 데이터베이스 이름을 써도 되지만 그러면 깃에 올릴수가 없으니 이러한 방법을 사용했다

 

그 후 db.js 파일을 이렇게 만들어주었다

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var mysql = require("mysql");
require('dotenv').config();
 
// database setup
var connection = mysql.createConnection({
  host     : process.env.DB_HOST,
  user     : process.env.DB_USER,
  password : process.env.DB_PW,
  database : process.env.DB_NAME
});
 
connection.connect(function(err){
    if(err) throw err;
});
 
module.exports = connection;
cs

 

mysql 설치는 팀원이 해 주었다

 

env 파일에 저장해둔 host,user,pw 등을 가져다가 쓸 수 있다

connection을 연결해 준 후 잘 돌아가는 지 확인해보았다

 

처음에는 에러가 나면서 연결이 안되는 문제가 발생했다

ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

이러한 에러가 발생했었는데 다음과 같이 해결했다

https://stackoverflow.com/questions/50093144/mysql-8-0-client-does-not-support-authentication-protocol-requested-by-server

 

MySQL 8.0 - Client does not support authentication protocol requested by server; consider upgrading MySQL client

I can't make a simple connection to the server for some reason. I install the newest MySQL Community 8.0 database along with Node.JS with default settings. This is my node.js code var mysql =

stackoverflow.com

 

다행히 바로 해결되었다!!

연결 되는 것을 확인하고 테스트 쿼리들도 돌려보았다

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var express = require('express');
var router = express.Router();
var db = require('./db');
 
/* GET all the problems*/
router.get('/'function(req, res) {
    query = "SELECT * FROM Problem";
    db.query(query, function (err, results, fields) {
        if(err) {
            console.log(err);
        }
        console.log(results);
        res.send(results);
    });
});
 
/* Get a problem by id */
router.get('/:id'function(req, res) {
    query = "SELECT * FROM Problem WHERE problem_id=" + req.params.id;
    db.query(query, function (err, results, fields) {
        if(err) {
            console.log(err);
        }
        console.log(results);
        res.send(results);
    });
});
 
module.exports = router;
cs

 

예시로 넣어둔 문제들을 잘 가져오는 것을 확인할 수 있었다

query만 수정해가면서 앞으로 비슷하게 사용하면 될 듯 하다