Node.js에서 MySQL을 연동해볼게요.
연동하고 select, insert, update, delete 쿼리까지 실행시켜 볼거에요.
연동하고 사용하는 것 자체는 매우 간단해요.
우선, mysql2 모듈을 설치해줍니다.
npm i mysql2
pool.js
const mysql = require('mysql2/promise')
const pool = mysql.createPool({
host: 'localhost',
port: 3306,
user: 'demouser',
password: 'demo12#$',
database: 'demo_db',
connectionLimit: 10
})
module.exports = pool
router
쿼리를 어떻게 사용하는지 볼 수 있도록 아주 간단하게 CRUD 기능(select, insert, update, delete)을 작성했어요.
실제로 query 메소드에서 리턴한 data 전체를 한 번 찍어보고 비즈니스 로직을 작성하는 게 좋아요.
async, await로 구현한 경우 query 호출 부분은 꼭 try 로 감싸줘야 에러가 발생하였을 때 오류 응답 처리할 수 있어요.
var express = require('express')
var router = express.Router()
const pool = require('../database/pool')
router.get('/:boardId', async (req, res, next) => {
const { boardId } = req.params
try {
const data = await pool.query('select board_id, title, content from board where board_id = ?', [boardId])
return res.json(data[0])
} catch (err) {
return res.status(500).json(err)
}
})
router.get('/', async (req, res, next) => {
const { page, size } = req.query
try {
const data = await pool.query('select board_id, title from board limit ?, ?', [Number(page), Number(size)])
return res.json(data[0])
} catch (err) {
return res.status(500).json(err)
}
})
router.post('/', async (req, res, next) => {
const { title, content } = req.body
try {
const data = await pool.query('insert into board set ?', { title: title, content: content })
return res.json(data[0])
} catch (err) {
return res.status(500).json(err)
}
})
router.patch('/:boardId', async (req, res, next) => {
const { boardId } = req.params
const { title, content } = req.body
try {
const data = await pool.query('update board set title = ?, content = ? where board_id = ?', [title, content, boardId])
return res.json(data[0])
} catch (err) {
return res.status(500).json(err)
}
})
router.delete('/:boardId', async (req, res, next) => {
const { boardId } = req.params
try {
const data = await pool.query('delete from board where board_id = ?', [boardId])
return res.json(data[0])
} catch (err) {
return res.status(500).json(err)
}
})
module.exports = router
Node에서 mysql2 모듈을 사용하면 연동 자체는 아주 간단하고 쉬워요.
간단한 비즈니스에서 가볍게 사용하기 매우 매우 좋습니다.
위의 코드를 기반으로 조금이나마 Node의 소스 구조를 잡아보려고 해요.
아래 링크를 참고해주세요.
'Backend > Node.js' 카테고리의 다른 글
Node.js 재시작 없이 반영, 자동 재시작 (Supervisor) (0) | 2020.04.01 |
---|---|
Node.js 코딩 패턴 (Routes-Controllers-Services 구조) (2) | 2019.11.13 |
Node.js MySQL Transaction(트랜잭션) (6) | 2019.11.13 |
Node.js Express 설치 (express-generator) (0) | 2019.10.10 |
NVM 설치, Node 버전 관리 (Windows / Mac) (2) | 2019.10.01 |