티스토리 뷰
RDS에 로그인이 되었다 가정하고 필요한 것( Amazon RDS 엔드포인트. 계정명, 비밀번호, 연결할 MySQL DB이름)
1. 해당 프로젝트에 express, mysql2라이브러리 설치하기
# yarn으로 프로젝트를 초기화합니다.
yarn init -y
# express와 mysql 드라이버를 설치합니다.
yarn add express mysql2
2. app.js에서 mysql 정보를 입력해 줍니다. (여기선 AWS RDS 정보사용)
// app.js
import express from 'express';
import mysql from 'mysql2'; //MySQL 데이터베이스를 Node.js에서 사용할 수 있게 도와주는 라이브러리
const connect = mysql.createConnection({
host: , // AWS RDS 엔드포인트 (AWS가 아니라면 데이터베이스 드라이버가 접속할 데이터베이스의 주소)
user: 'root', // AWS RDS 계정 명
password: 'aaaa4321', // AWS RDS 비밀번호
database: 'express_db', // 연결할 MySQL DB 이름 ( 데이터베이스에 연결할 DB가 존재해야함 )
port : 3306, // 기본값이 3306이라 설정하지 않아도 되지만 만약 변경이 있었다면 설정을 해주어야함
})
const app = express();
const PORT = 3000;
app.use(express.json());
app.listen(PORT, () => {
console.log(PORT, '포트로 서버가 열렸어요!');
});
3. 해당 경로를 호출하면 테이블이 생성될수 있도록 작성해줍니다.
app.post("/api/tables", async (req, res, next) => {
const { tableName } = req.body;
await connect.promise().query( // Raw Query를 사용하기 위한 형식. query()안에 쿼리문 작성.
`CREATE TABLE ${tableName}(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
createdAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
)`
);
return res.status(201).json({ message: "테이블 생성에 성공하였습니다." });
});
4. 테이블 조회하는 경로 작성하기
app.get("/api/tables", async (req, res, next) => {
const [tableList] = await connect.promise().query(`show tables`);
console.log(tableList); // [ { Tables_in_express_db: 'test' } ]
const tableNames = tableList.map((table) => Object.values(table)[0]);
// Object.values(table)[0] 으로 설정하는 이유
/*
[0]으로 설정하지 않게 되면
{"tableNames": [["test"]]}
2차배열의 형태로 결과가 나오게 된다.
[0]으로 설정한다면
{"tableNames": ["test"]}
이렇게 배열 바로 앞에 위치하는 1차배열의 형태인걸 볼수 있습니다.
이 이유는 Object.value()가 배열형태로 값을 꺼내오기 때문에 배열의 0번째라고 지정을 해주어야합니다.
*/
return res.status(201).json({ tableNames: tableNames });
});
처음 데이터 베이스를 생성할 때 저렇게 한칸씩만 띄우면 스키마에 들어가는 내용들이 구분이 될까 하면서
서버를 켜주고 경로를 작성하니
잘들어갑니다.
4. 테이블 데이터 삽입하는 경로 작성하기
/** 데이터 삽입 API **/
app.post("/api/tables/:tableName/items", async (req, res, next) => {
const { tableName } = req.params;
const { name } = req.body;
await connect.promise().query(`
INSERT INTO ${tableName} (name)
VALUES ('${name}')`);
return res.status(201).json({ message: "데이터 생성에 성공하였습니다." });
});
잘 들어가는걸 확인 할 수 있습니다.
데이터 베이스를 설정 할 때 의 정보들만 잘 저장해 뒀다면 크게 어려움없이 할수 있는것 같습니다!
'프로그래밍 기초 > database' 카테고리의 다른 글
DDL, DML, DCL, TCL 이란? (0) | 2024.02.02 |
---|---|
MongoDB(작업 코드에 MongoDB적용하기) (1) | 2024.01.26 |
RDS로 MySQL 세팅하기 (0) | 2024.01.24 |
Docker에서 MySQL관리하기 (0) | 2024.01.21 |
MongoDB 사용하기(MongoDB Client : Studio 3T) (0) | 2024.01.18 |