MySQL 연동

현서·2025년 5월 7일

백엔드

목록 보기
11/18
post-thumbnail

✨ config.mjs

export const config = {
  db: {
    host: "localhost",
    user: "apple",
    password: "1111",
    database: "nodejs",
  },
};

✨ db.mjs

import mysql from "mysql2";
import { config } from "./config.mjs";

const pool = mysql.createPool({
  host: config.db.host,
  user: config.db.user,
  database: config.db.database,
  password: config.db.password,
});

export const db = pool.promise();

✨ userRepository.mjs

import { db } from "./db.mjs";

export async function getUsers() {
  // db.query("select * from member")의 반환은 [rows, fields]
  const [rows] = await db.query("select * from member");
  // console.log(rows);
  return rows;
}

export async function createUser(
  userid,
  userpw,
  name,
  hp,
  email,
  gender,
  ssn1,
  ssn2,
  zipcode,
  address1,
  address2,
  address3
) {
  const [result] = await db.query(
    "insert into member (userid, userpw, name, hp, email, gender, ssn1, ssn2, zipcode, address1, address2, address3) values (?, ?, ?, ?, ?, ?, ? , ? , ? , ?, ?, ?)",
    [
      userid,
      userpw,
      name,
      hp,
      email,
      gender,
      ssn1,
      ssn2,
      zipcode,
      address1,
      address2,
      address3,
    ]
  );
  return result.insertId;
}

// update
export async function updateUserEmail(idx, newEmail) {
  const [result] = await db.query("update member set email=? where idx=?", [
    newEmail,
    idx,
  ]);
  return result.affectedRows; // 몇 개의 행이 수정됐는지
}

// delete
export async function deleteUser(idx) {
  const [result] = await db.query("delete from member where idx = ?", [idx]);
  return result.affectedRows; // 몇 개의 행이 삭제됐는지
}

✨ index.mjs

import { deleteUser, getUsers, updateUserEmail } from "./userRepository.mjs";
import { db } from "./db.mjs";
import { createUser } from "./userRepository.mjs";

async function main() {
  // select
  // const users = await getUsers();
  // console.log("사용자 목록: ", users);

  // insert
  // userid, userpw, name, hp, email, gender, ssn1, ssn2, zipcode, address1, address2, address3
  /*
  const newUserId = await createUser(
    "hsgo",
    "1011",
    "현서",
    "010-1111-1111",
    "hsgo@naver.com",
    "여자",
    "000000",
    "0000000",
    "12345",
    "서울 광진구 자양동",
    "11-11",
    "17층"
  );
  console.log("새 사용자 ID: ", newUserId);
  */

  // update
  /*
  const updateCount = await updateUserEmail(1, "apple@naver.com");
  console.log("수정된 사용자 수: ", updateCount);

  await db.end(); // 풀 종료(보통 사용하지 않음)
  */

  // delete
  const deletedCount = await deleteUser(6);
  console.log("삭제된 사용자 수: ", deletedCount);
}

main();

💥 index.mjs 코드에서
await db.end();를 하면 풀이 종료된다...
💥 insert부분은 MySQL에서 테이블 결과를 확인할 수 있다.
💥 select, update, delete 부분은 vscode 콘솔 창에서 MySQL과 연동되어 나타난 결과를 확인할 수 있다.

profile
The light shines in the darkness.

0개의 댓글