SAC

[새싹x코딩온] 풀스택 개발자 부트캠프 과정 6주차-1 회고 | Express to MySQL

비너발트 2024. 12. 6. 10:05

Node.js에서 서비스를 개발할때 로컬 파일을 통한 데이터 저장이 아닌 외부 저장소(DB)를 통해 데이터를 통해 관리해야하는데 이때 사용되는 프레임워크가 바로 MySQL입니다 데이터베이스 프로그램엔 오라클, MSSQL, 마리아DB 등 다양한 프로그램이 많지만 대표적으로 많이 사용되는 프로그램이 MySQL입니다

 

MySQL 연동을 위한 준비

Node.js 에서 MySQL을 사용하려면 별도의 MySQL을 설치해줘야합니다

npm install mysql

node CLI에서 해당 코드를 작성하면 mysql이 정상적으로 설치됩니다

※ 주의사항 PC에 MYSQL 9.0버전 이상이 설치되어 있을 경우 mysql2 를 설치합니다

 

아래 코드를 시작하기 전 미리 test 이름의 데이터베이스를 생성해주세요

 

MySQL 연동

const express = require('express');
const mysql = require('mysql');

const app = express();
const port = 3000;

// JSON 데이터를 처리하기 위해 설정
app.use(express.json());

// MySQL 데이터베이스 연결 설정
const db = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: 'yourpassword',
  database: 'testdb'
});

app.js 에 위 코드에서 본인의 데이터베이스 환경에 맞게 작성합니다

이 코드에선 mysql 모듈의 createConnection 메서드를 호출해 mysql에 연결할 데이터를 설정합니다

 

MySQL 연결확인

// MySQL 연결
db.connect((err) => {
  if (err) {
    console.error('데이터베이스 연결 실패:', err);
    return;
  }
  console.log('데이터베이스에 연결되었습니다.');
});

DB설정값 설정이 완료되었으면 query를 보내기전 연결테스트를 진행합니다 여기서 err은 연결 중 에러가 발생했을때 반환되는 값입니다 정상적으로 연결이 되었다면 빈값이 전달되며 반대로 오류가 발생했을때 오류정보가 담긴 객체가 반환됩니다

 

MySQL 테이블 조회하기

// 모든 사용자 조회
app.get('/users', (req, res) => {
  const sql = 'SELECT * FROM users';
  db.query(sql, (err, results) => {
    if (err) {
      res.status(500).send('데이터를 가져오는 중 오류 발생');
      return;
    }
    res.json(results);
  });
});

기본적이 값을 조회하는 SQL를 보내는 코드입니다 127.0.0.1/user 로 요청시 실행하는 코드이며 sql 변수에 DB에 요청할 SQL문을 기입하고 db(mysql 객체)의 query메서드를 통해 SQL문을 DB에 요청하는 합니다 매개변수 (err, result)에서는 SQL을 보내고 반환되는 오류와 결과값을 반환합니다 오류가 없을경우 err값은 빈값이며 성공시 result의 값은 객체값으로 반환됩니다

 

 

MySQL Insert

app.post('/users', (req, res) => {
  const { name, age } = req.body;
  const sql = 'INSERT INTO users (name, age) VALUES (?, ?)';
  db.query(sql, [name, age], (err, result) => {
    if (err) {
      res.status(500).send('사용자를 추가하는 중 오류 발생');
      return;
    }
    res.send('사용자가 성공적으로 추가되었습니다.');
  });
});

INSERT는 SELECT와 유사하지만 query 메서드의 매개변수에서 약간 방법이 틀립니다 sql에서 추가될 VALUES의 값을 넣어줘야합니다 `${},${}`를 사용해 쿼리를 보내줘도 괜찮지만 따로 전달할 값을 매개변수로 지정하는 편이 문법상 더좋은 방법입니다

 

MySQL UPDATE

app.put('/users/:id', (req, res) => {
  const { id } = req.params;
  const { name, age } = req.body;
  const sql = 'UPDATE users SET name = ?, age = ? WHERE id = ?';
  db.query(sql, [name, age, id], (err, result) => {
    if (err) {
      res.status(500).send('사용자를 수정하는 중 오류 발생');
      return;
    }
    res.send('사용자가 성공적으로 수정되었습니다.');
  });
});

 

 

MySQL DELETE

// 사용자 삭제
app.delete('/users/:id', (req, res) => {
  const { id } = req.params;
  const sql = 'DELETE FROM users WHERE id = ?';
  db.query(sql, [id], (err, result) => {
    if (err) {
      res.status(500).send('사용자를 삭제하는 중 오류 발생');
      return;
    }
    res.send('사용자가 성공적으로 삭제되었습니다.');
  });
});

 

UPDATE, DELETE 문은 INSERT문과 같기때문에 별다른 설명을 첨부하지않았지만 대체로 다 유사한 방법으로 작성할 수 있습니다