์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 30 | 31 |
- ์๋ฐ
- spring scheduler
- db์ํคํ ์ณ
- oauth
- Personal Access Token
- ์ค๋ธ์
- ์ฝ๋ฉํ ์คํธ
- Jenkins
- MySQL
- GoogleLogin
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- dockerhub
- SpringBoot
- spring
- injection๊ณต๊ฒฉ
- db์ ๋ต
- ์๊ณ ๋ฆฌ์ฆ
- CICD
- ํฌ๋ก์ค์ฌ์ดํธ ์คํฌ๋ฆฝํธ
- docker network
- @scheduler
- docker
- Node.js
- ๋ ผ๋ธ๋กํน
- ์ฝํ
- Java
- ๋์์ธํจํด
- node.js mysql ์ฐ๋
- React
- java์ฑํ
- Today
- Total
<Hello Hosung๐/>
[Node.js] Node.js(Express) ↔๏ธ MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๐ฆ ์ฐ๋ํ๊ธฐ ๋ณธ๋ฌธ
[Node.js] Node.js(Express) ↔๏ธ MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๐ฆ ์ฐ๋ํ๊ธฐ
์ข์ถฉ์ฐ๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ผ๊ธฐ๐ง 2024. 9. 23. 13:06
์ด๋ฒ์ Node.js ์ MySQL ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋๊ณผ ๋ํ mybatis-mapper ๋ฅผ ํ์ฉ ํ๋ ๋ฐฉ๋ฒ ๋ํ ์์ ๋ณด๋๋ก ํด์๐
๋จผ์ ์๋์ ๊ฐ์ด ๋์ปค ํ๊ฒฝ์ MySQL ์ปจํ
์ด๋๊ฐ ์ฌ๋ผ ๊ฐ๋ค๊ณ ๊ฐ์ ํด๋ด
์๋ค!
(๋์ปค๋ฅผ ํตํด MySQL DB ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ์๋์์ ํ์ธ ๊ฐ๋ฅํด์) โ โ โ
2024.08.18 - [๐ณ Docker] - [Docker] ๋์ปค๋ก MySQL DB๐ฆ ์๋ฒ ๋ง๋ค์ด๋ณด๊ธฐ

๊ทธ๋ฆฌ๊ณ ์๋์ ๊ฐ์ด Node.js๋ก ์์ฑํ Express ์๋ฒ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณผ๊ฒ์.
Express๋ Node.js๋ฅผ ์ํ ๋น ๋ฅด๊ณ ๊ฐ๋จํ ์น ์ ํ๋ฆฌ์ผ์ด์
ํ๋ ์์ํฌ์์. ๐ง
์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ฝ๊ฒ ๋ง๋ค ์ ์๋๋ก ๋์์ฃผ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ, ํนํ REST API๋ ์น ์๋ฒ๋ฅผ ๊ตฌ์ถํ ๋ ๋ง์ด ์ฌ์ฉํฉ๋๋ค.

์๋ฒ๋ฅผ ์คํ์ํค๊ธฐ์ ๋ด MySQL ๊ณผ ์ ์์ด ๊ฐ๋ฅํ์ง ํ์ธ์ ํ๊ธฐ์ํด ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํด๋ณผ๊ฒ์. ์ฌ๊ธฐ์ ์ฌ์ฉ๋ ํ์ผ์ ์๋์ ๊ฐ์์
ใsrc/config/database.js
ใsrc/database.js
ใ.env
[.env]
ํด๋น ํ์ผ์ ํ๋ก์ ํธ์์ ์ฌ์ฉ๋ ์ ์ญ๋ณ์๋ฅผ ์ค์ ํ๋ ํ์ผ์ด์์.
ํด๋น ํ์ผ์ ๋ํ์ ์ ์ญ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด, ์๋์ ๊ฐ์ด dotenv๋ฅผ ์ค์นํด์ผ ๋์ (https://www.npmjs.com/package/dotenv)
npm install dotenv --save
๊ทธ ์ดํ ์๋์ ๊ฐ์ด DB์ ์ค์ ์ ๋ณด๋ค์ ์๋์ ๊ฐ์ด ์์ฑํฉ๋๋ค.

[database .js]
์ด ์ฝ๋๋ Node.js์์ MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๊ธฐ ์ํด mysql2/promise ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๊ฒฝ ๋ณ์(.env)๋ฅผ ์ฌ์ฉํ๋ ์ค์ ์ด์์

1. require("dotenv").config();
dotenv ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ .env ํ์ผ์ ์ ์ฅ๋ ํ๊ฒฝ ๋ณ์๋ฅผ ๋ก๋ํ์ฌ Node.js์์ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
.env ํ์ผ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ ๋ณด์ ๊ฐ์ด ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์ฅํด ๋๊ณ , ์ด ํ์ผ์ dotenv๋ฅผ ํตํด ๋ถ๋ฌ์ต๋๋ค.
2. const mysql = require("mysql2/promise");
ํด๋น ๋ชจ๋์ MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋น๋๊ธฐ์ ์ผ๋ก ์ฐ๊ฒฐํ๊ณ ์ฟผ๋ฆฌ๋ฅผ ์คํํ ์ ์๋๋ก ๋๋ MySQL ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค.
์ด ๋ชจ๋์ ํ๋ก๋ฏธ์ค๋ฅผ ์ง์ํ๊ธฐ ๋๋ฌธ์ async/await ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ ์์
์ ๋ณด๋ค ์ง๊ด์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
3. const pool = mysql.createPool({ ... });
createPool ๋ฉ์๋๋ MySQL ์ฐ๊ฒฐ ํ(connection pool)์ ์์ฑํฉ๋๋ค.
์ฐ๊ฒฐ ํ์ ๋ฏธ๋ฆฌ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ๋ง๋ค์ด ๋๊ณ , ํ์ํ ๋๋ง๋ค ์ฌ์ฌ์ฉํ ์ ์๋ ๊ตฌ์กฐ์
๋๋ค. ์ด๋ฅผ ํตํด ์ฑ๋ฅ์ด ํฅ์๋๊ณ , ์ฌ๋ฌ ์์ฒญ์ด ๋์์ ๋ค์ด์๋ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
[server.js]
์ด ์ฝ๋๋ Node.js๋ก ์์ฑ๋ Express.js ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ฅผ ๊ตฌ๋ํ๊ณ , MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ํ์ธํ๋ ์ญํ ์ ํฉ๋๋ค.

์ ์์ค์ค ์ค์์ ๋ด์ผ ํ ๊ฑด " // ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ถ๋ถ " ์ด๊ณ ํด๋น ๋ด์ฉ์ ๋ํ ์ค๋ช
์ ์๋์ ๊ฐ์์
1. ๋น๋๊ธฐ ํจ์๋ฅผ ์ฆ์ ์คํํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ํ
์คํธํฉ๋๋ค.
2. **pool.query("SELECT 1");**๋ ๊ฐ๋จํ ์ฟผ๋ฆฌ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ด ์ฑ๊ณต์ ์ผ๋ก ์ด๋ฃจ์ด์ก๋์ง ํ์ธํฉ๋๋ค. ์ฟผ๋ฆฌ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์คํ๋๋ฉด Database connection successful ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๊ณ , ์คํจํ๋ฉด ์๋ฌ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
3. **SELECT 1**์ ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ ํ ๋ณํ๋ ์ฃผ์ง ์๋ ๊ฐ๋จํ ์ฟผ๋ฆฌ์
๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ์์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๋์ง ํ
์คํธํ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ Express + MySQL ์ ์ฐ๋์ ํด๋ณด์๊ณ ๋ค์์๋ mybatis-mapper ์ฌ์ฉํ์ฌ ORM ์ฒ๋ผ ์ฟผ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฒ์ ํด๋ณผ๊ฒ์๐
'๐ฑ JavaScript > ใ คNode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Node.js] OAuth2 ๋ก๊ทธ์ธ - 2(Google Login) (1) | 2024.11.19 |
---|---|
[Node.js] OAuth2 ๋ก๊ทธ์ธ - 1 (0) | 2024.11.18 |
[Node.js] bcrypt ๋ก ํ์๊ฐ์ ๊ตฌํํ๊ธฐ (0) | 2024.10.15 |
[Node.js] Express ์๋ฒ๋ฅผ ๋ง๋ค์ด ๋ณด์ (0) | 2024.09.24 |