Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

사고쳤어요

[Node.js] 유튜브 서비스 - 채널 생성 서비스(DB 연결) 본문

웹 풀스택

[Node.js] 유튜브 서비스 - 채널 생성 서비스(DB 연결)

kevinmj12 2025. 2. 26. 21:51

https://makeaccident.tistory.com/123

 

[Node.js] 유튜브 서비스 - 채널 생성, 채널 조회(POST, GET)

채널 생성const express = require("express");const app = express();app.listen(3000);app.use(express.json());let channelDb = new Map();var id = 1;app .route("/channels") // 채널 전체 조회 .get((req, res) => {}) // 채널 생성 .post((req, res) =>

makeaccident.tistory.com

채널 생성 서비스를 데이터베이스에 연결하여 구현해보자.

  // 채널 생성
  .post((req, res) => {
    let channelTitle = channel.channelTitle;
    let userId = channel.userId;

    if (!userId) {
      res.status(400).json({
        message: "로그인이 필요합니다",
      });
    } else if (!channelTitle) {
      res.status(400).json({
        message: "channelTitle이 포함되어있지 않습니다.",
      });
    } else {
      let sql = `INSERT INTO channels (name, user_id) 
      VALUES (?, ?)`;
      conn.query(sql, [channelTitle, userId], (err, rows, fields) => {
        if (err) {
          console.log(err);
          return;
        } else {
          res.status(201).json({
            message: `${name}님 환영합니다`,
          });
        }
      });
    }
  });

위와 같이 정상적인 channelTitle과 userId를 입력했을 때 아무 문제 없이 잘 작동하는 것을 볼 수 있다.

그런데 user_id에 이상한 값을 넣고 실행한다면 어떻게 될까?

 

포스트맨에서는 무한 로딩이 발생하고, 콘솔에서도 에러가 발생한다.

이를 해결하기 위해 errno가 1452일 때의 예외처리를 진행해주자.

conn.query(sql, [channelTitle, userId], (err, rows, fields) => {
    if (err.errno == 1452) {
      res.status(400).json({
        message: "존재하지 않는 user id입니다.",
      });
    } else if (err) {
      console.log(err);
      return;
    } else {
      res.status(201).json({
        message: `${channelTitle}님 환영합니다`,
      });
    }
  });
}

예외처리가 잘 된 것을 볼 수 있다.