반응형
express 구성
routes라는 폴더를 만들고 라우터를 연결해주었다.
const express = require('express');
const cors = require('cors');
const morgan = require('morgan');
const dotenv = require('dotenv');
const app = express();
dotenv.config();
app.set('port', 8080);
app.use(
cors({
origin: '*',
})
);
app.use(morgan('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.listen(app.get('port'), () => {
console.log(app.get('port'), '번 포트로 서버 ON');
});
const defaultRouter = require('./routes/index');
const signupRouter = require('./routes/signup');
app.use('/', defaultRouter);
app.use('/signup', signupRouter);
cors를 통해 CORS 문제를 해결해주었고, req.body를 읽기 위해 express.unlencoded, express.json를 사용해주었다.
참고한 블로그
https://velog.io/@jiseong/Node-Express-req.body
SQL문 처리
SQL문을 따로 관리해주자.
connect를 통해 MySQL에 접속한다.
mysql2 npm 라이브러리를 통해 접속한다.
mysql 라이브러리도 있는데 이걸로 접속했더니 접속이 제대로 되지않아서 mysql2를 사용해주었다.
이 원인은 MySQL8부터 기본 인증 프로토콜이 caching_sha2_password로 변경되어서 이다.
https://calvinjmkim.tistory.com/53
const mysql = require('mysql2/promise');
const connectInfo = {
host: 'localhost',
port: '3306',
user: process.env.USER,
password: process.env.PASSWORD,
database: 'user',
};
const connectMySQL = async () => {
const connect = await mysql.createConnection(connectInfo);
connect.connect();
return connect;
};
module.exports = connectMySQL;
이런식으로 DB를 연결해둔다. userid와 password는 .env를 통해 관리해주었다.
테이블 만들기
이렇게 설계해주었다.
쿼리문 사용예시
아래와 같이 사용하면된다.
const connectMySQL = require('./connect');
const connect = await connectMySQL();
const SQL = `SELECT * from login_table`;
const [rows] = await connect.execute(SQL);
이러면 rows에 결과가 담기게 된다.
반응형