728x90
뭐든 처음 베이스 세팅 과정이 어려운 것 같다.
회사에서 mysql을 버리고 elasticsearch를 사용한 지 몇 년 된 것 같은데
엘라스틱 쿼리에 익숙해지면서 mysql을 완전 잊어버린 것 같고, node로 mysql을 다뤄본 적이 없어 한 번 해보고 싶어서 해봤다.
mysql은 맥북에 셋팅 했다.
참고 블로그 : https://twinparadox.tistory.com/619, https://tlo-developer.tistory.com/293)
그리고 connection pool 방식으로 진행하기로 했다.
먼저 mysql.js 라는 모듈용 파일을 생성
const mysql = require('mysql');
const {
MYSQL_HOST,
MYSQL_USER,
MYSQL_PW,
MYSQL_DB,
} = process.env;
module.exports = mysql.createPool({
host: MYSQL_HOST,
user: MYSQL_USER,
password: MYSQL_PW,
database: MYSQL_DB,
connectTimeout: 5000,
connectionLimit: 30 //default 10
})
이렇게 하면 사용 준비는 끝이다.
확인 과정에서 엄청 삽질한 부분이 있는데,
엘라스틱서치 클라이언트를 만들 때 host에 protocol://ipaddress:port 이렇게 만드는 게 습관이 들어서 mysql에서도 똑같이 하다 안됐었다.
당연히 맞는 건 줄 알고 다른 곳에서 원인을 찾느라 오랜 시간 삽질을 했다...
ipaddress만 입력하면 된다.
난 내 맥북 자체에서 하는거라 localhost만 입력했다.
준비는 끝났고 이제 확인을 위해 테이블을 생성하는 소스.
const express = require('express');
const router = express.Router();
const mysql = require('../../mysql');
router.post('/user_table', async (req, res) => {
console.info('/api/mysql/make/user_table');
let rt = {
ok: false,
msg: '',
result: null
}
try {
const sql = `CREATE1 TABLE tb_user (
user_id varchar(255),
user_nm varchar(255),
user_pw varchar(255),
user_addr varchar(255),
user_mk_dt datetime,
user_upd_dt datetime,
is_use tinyint(1)
)`;
mysql.getConnection((err, connection) => {
if (err) {
console.error('connection Error : ', err);
rt.msg = 'connection Error';
rt.result = err;
res.send(rt);
} else {
connection.query(sql, (err, rs, fields) => {
if (err) {
console.error('query Error : ', err);
rt.msg = 'query Error';
rt.result = err;
res.send(rt);
} else {
console.log('result : ', rs);
rt.ok = true;
rt.msg = 'success!!';
rt.result = rs;
res.send(rt);
}
})
connection.release();
}
});
} catch (err) {
console.error("makeTable/user_table Error!!");
console.error(err);
rt.msg = 'user_table Error';
rt.result = err.message;
res.send(rt);
}
// res.send(rt);
})
module.exports = router;
api요청을 받으면 테이블을 생성하는 로직이다.
일단 소스를 보다시피 callback 방식이라 보기 좀 좋지 않게 느껴진다.
async/await을 사용해보려고 했더니 안되길래 한 번 찾아보니, 사용하기 위해선 mysql2를 설치해야 한다고 한다.
조만간 설치해서 다시 수정해볼 생각이다.
반응형
'Node.js' 카테고리의 다른 글
[NodeJS] express+mysql2+transaction 데이터 처리 (0) | 2022.03.15 |
---|---|
[NodeJS] express에서 mysql2 사용하기 (0) | 2022.03.10 |
[NodeJS] Error: Unable to load PFX certificate 에러 (0) | 2022.02.23 |
[NodeJS] ElasticSearchAPI putMapping 중 에러 (3) | 2022.01.22 |
[NodeJS] node-schedule을 이용한 elasticsearch 인덱스 생성 (0) | 2022.01.06 |