웹(WEB)/자바스크립트(JS)

Node.js MySQL 연동

마달랭 2024. 8. 27. 15:17
반응형

개요

1. 테이블 생성

Workbench 를 사용해 AWS MySQL 접속 후, 테이블을 생성해 준다.

MySQL과 Workbench 설치는 하기 링크에서 다운로드가 가능하다.

 

MySQL :: Download MySQL Installer

Note: MySQL 8.0 is the final series with MySQL Installer. As of MySQL 8.1, use a MySQL product's MSI or Zip archive for installation. MySQL Server 8.1 and higher also bundle MySQL Configurator, a tool that helps configure MySQL Server.

dev.mysql.com

 

 

 

MySQL :: Download MySQL Workbench

Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Red Hat Enterprise Linux / Oracle Linux Fedora macOS Source Code Select OS Version: All Windows (x86, 64-bit) Recommended Download: Other Downloads: Windows (x86, 64-bit), M

dev.mysql.com

 

test 스키마를 만들고 test 테이블을 생성해 주고 더미 데이터를 넣어 주었다.

 

2. db연동

db와 연결해 줄 모듈용 js파일을 작성해 준다.

나는 기존에 실습하던 디렉토리에 db 폴더를 생성하고, index.js를 한개 더 생성해 주었다.

 

코드

const mysql = require("mysql2/promise");

const pool = mysql.createPool({
    // 로컬 호스트
    host: "localhost",
    // db 사용자 이름
    user: "root",
    // 해당 사용자의 비밀번호
    password: "root",
    // 사용할 스키마
    database: "test",
    waitForConnections: true,
    connectionLimit: 10,
    queueLimit: 0,
});
// 모듈화
module.exports = { pool };

 

위에서 작성한 코드를 모듈화 하여 require 처리해 주고, db와의 통신이 가능하다.

 

코드

// db 폴더에 작성해 준 모듈을 가져온다.
const { pool } = require("./db");

const express = require("express");
const morgan = require("morgan");
const test = express();
const PORT = 8080;

test.use(express.json());
test.use(morgan("dev"));

// api/test 주소로 접속하여 비동기 상태로 db의 정보를 가져온다.
test.get("/api/test", async (req, res) => {
    try {
        // 모든 데이터를 불러 올때까지 await
        const data = await pool.query("SELECT * FROM test");
        // 성공적으로 데이터를 가져 왔다면 json 형태로 출력
        if (data[0]) {
            return res.json(data[0]);
        }
    } catch (e) { // 예외 발생 시 에러 노출
        return res.json(e);
    }
});

test.listen(PORT, () => `${PORT}`);

 

실행한 쿼리문이 그대로 실행되어 test 테이블에 있는 모든 데이터가 json 형태로 노출되는 것을 볼 수 있다.

 

결과

 

이외에도 CRUD에 해당하는 작업 모두 적절한 쿼리문을 사용하여 db와의 연동이 가능하다.

728x90
반응형