AWS RDS๋ฅผ ์์ฑํ๋ค๋ฉด, ์ฌ์ฉํด๋ณด์
AWS์์ RDS๋ฅผ ์์ฑํ๊ณ ์ค์ ํ๋ค๋ฉด,
Node๋ก ์ฌ์ฉํด๋ณด๋๋กํ์.
์ฐ์ ์, mysql2 ํจํค์ง ๋ชจ๋์ ์ค์นํ๋ค.
์ฐธ, RDSํธ์์ ์์ธํ ์ค์ ๋ด์ฉ์ ์๋ตํ์ง๋ง,
RDS์์ ์ค์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋์ ์ค์นํ๋ค๊ณ ์๊ฐํ์.
mysql(aurora๊ฐ ์๋๋ค.)์ ์ค์ ํ์ผ๋ ๋ชจ๋๋ mysql๋ก ์ค์นํ๋ค.
const mysql = require('mysql2');
npm์ ๊ณต์ ์ฌ์ดํธ์ ๋ค์ด๊ฐ๋ฉด ๋ชจ๋์ ๋ํ ์ค๋ช
์ ์ฐพ์๋ณผ ์ ์๋ค.
mysql2๋ฅผ ๊ฒ์ํด๋ณด๋ฉด ์ด๋ป๊ฒ ์ฌ์ฉํ ์ ์๋์ง ์ธ์ธํ๊ฒ ๋์ค๋๋ฐ
์ค๋ ์ ๋ฆฌํ ๊ฒ์ createPool ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
pool์ ๋ด ํ๋ก์ ํธ์ RDS๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ์ญํ ์ ํ๋ค.
const pool = mysql.createPool({
host: "", // RDS DB ์๋ํฌ์ธํธ
user: "admin",
password: "",
port: 3306,
database: "db_test",
});
์ ์์๋ฅผ ๋ณด๋ฉด host์๋ RDS DB ์๋ํฌ์ธํธ๊ฐ ๋ค์ด๊ฐ๊ณ
user, pw, port๋ ์ ๋ถ RDS ์์ฑํ ๋ ์ค์ ํ ๋ด์ฉ์ด๋ค.
database๋ ์๋ค๋ฉด ์ฒ์์ ๊ณต๋์ผ๋ก ์์ํ๊ณ
RDS์์ฑํ ๋ ์ถ๊ฐ์ฌํญ์์ ์ฒ์ ์์ฑ์ DB ์์ฑ์ ์ค์ ํ๋ค๋ฉด
ํด๋น ์ด๋ฆ์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ด์ ๋ด ํ๋ก์ ํธ์ RDS๋ ์ฐ๊ฒฐ ๋ ๊ฒ์ด๋ค.
pool์ ์ฌ์ฉํด๋ณด์
RDS์ ์ฐ๊ฒฐ์ด ๋๋ค๋ฉด ์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฌ์ฉํด๋ณด์
DB์ ๋ญ๊ฐ๋ฅผ ํ๊ธฐ ์ํด์ ์, CRUD ์์
๋ฑ์ ํ๊ธฐ ์ํด์
query ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
pool์ queryํจ์๋ ์ด๋ ๊ฒ ์์ฑํ๋ค.
pool.query(`SQL๋ฌธ`, function(err, res, fields){
console.log(res);
};
);
๊ทธ๋ผ RDS์ DB์ ํด๋น SQL๋ฌธ์ ์ ์ฉ์ํค๊ณ
์ด๋ err์ ์๋ฌ, res๋ ๊ฒฐ๊ณผ, fields๋ ํ๋๋ฅผ ๋ํ๋ธ๋ค.
DB ์์ฑ๊ณผ ํ ์ด๋ธ ์์ฑ
pool์ ๋ชจ์ต์ ์ ๋ฆฌํ์ผ๋ ์ด์ ์ฝ๋๋ก๋ง ์ ๋ฆฌํ๊ณ ์ ํ๋ค.
// db talbe ์์ฑ
pool.query(`create table notes(
uuid BINARY(16) DEFAULT (UUID_TO_BIN(UUID())),
title VARCHAR(255) NOT NULL,
contents TEXT NOT NULL,
created TIMESTAMP NOT NULL DEFAULT NOW()
);`, function (err, results, fields) {
console.log(results);
});
// db ๋ด์ฉ ์ถ๊ฐ
pool.query(`insert into notes(title, contents) values('My First Note', 'A note about something'), ('My Second Note', 'A note about something else');`, function (err, results, fields) {
console.log(results);
});
pool CRUDํจ์ ๊ตฌํ
// select ํจ์ ๋ง๋ค๊ธฐ
function getNotes(){
pool.query(`select BIN_TO_UUID(uuid,true) as uuid,title,contents,created from notes`, function (err, results, fields) {
console.log(results);
});
}
// select ํจ์2 ๋ง๋ค๊ธฐ
function getNote(uuid){
pool.query(`select BIN_TO_UUID(uuid,true) as uuid,title,contents,created from notes where uuid=UUID_TO_BIN('${uuid}', 1);`, function (err, results, fields) {
// console.log(results); // ๋ณต์๋ก ๊ฐ์ ธ์จ๋ค. ๋ฐฐ์ด์ฒ๋ผ [{}] ์ด๋ ๊ฒ ๊ฐ์ ธ์จ๋ค.
console.log(...results); // ๋จ์๋ก ๊ฐ์ ธ์จ๋ค. {} ์ด๋ ๊ฒ ๊ฐ์ ธ์จ๋ค.
});
};
// insert ํจ์ ๋ง๋ค๊ธฐ
function addNotes(title,contents){
pool.query(`insert into notes(title, contents) values('${title}','${contents}');`, function (err, results, fields) {
console.log(results);
});
};
// update ํจ์ ๋ง๋ค๊ธฐ
function updateNotes(uuid,title,contents){
pool.query(`update notes set title='${title}', contents='${contents}' where uuid=UUID_TO_BIN('${uuid}', 1);`, function (err, results, fields) {
console.log(results);
});
}
// delete ํจ์ ๋ง๋ค๊ธฐ
function deleteNotes(uuid){
pool.query(`delete from notes where uuid=UUID_TO_BIN('${uuid}', 1);`, function (err, results, fields) {
console.log(results);
});
}