DB 연동 및 SQL Workbench

데브코스

목록 보기
47/131


DB를 연동하는 법.

시간대 맞추는 법

timezone : 'Asia/Seoul'
이거 안돼.

SELECT @@global.time_zone, @@session.time_zone;

이걸로 지금 글로벌 타임 존이 잘 되어있는지 확인하고,
안되어있다면

SET time_zone = 'Asia/Seoul';
이걸로 지정 해줘.

그럼 다음

const connection = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "root",
  timezone: "Asia/Seoul",
  database: "Youtube",
  dateStrings: true,
});

dateStrings 를 찍어줘


이걸 이제 db와 연동을 하는건데,

기존 코드

//express 모듈 세팅

const express = require("express");
const router = express.Router();
const conn = require("../mariadb");

router.use(express.json()); //json형태로 된 body를 파싱하는 모듈
//http 외 모듈을 하나 사용할건데, 그게 json형태로 된 body를 파싱하는 모듈을 사용할거야.

let db = new Map();
var id = 1;

//로그인
router.post("/login", function (req, res) {
  //email이 디비에 저장된 회원인지 확인

  const { email, password } = req.body;
  var loginUser = {}; //{}만 해도 객체가 됨

  conn.query(
    `SELECT * FROM users WHERE email = ?`,
    email,
    function (err, results, fields) {
      if (results.length) {
        loginUser = results[0];
        if (loginUser.password == password) {
          res.status(200).json({
            message: `${loginUser.name}님 로그인 되었습니다.`,
          });
        } else {
          res.status(400).json({
            message: "비밀번호가 틀렸습니다.",
          });
        }
      } else {
        res.status(404).json({
          message: "회원정보가 없습니다.",
        });
      }
    }
  );

  // db.forEach(function (user, id) {
  //   if (user.userId === userId) {
  //     loginUser = user;
  //   }
  // });

  // if (isExist(loginUser)) {
  //   console.log("로그인 성공");
  //   if (loginUser.password === password) {
  //     console.log("비밀번호 일치");
  //   } else {
  //     console.log("비밀번호 불일치");
  //   }
  // } else {
  //   console.log("존재하지 않는 계정입니다.");
  // }
});

function isExist(loginUser) {
  if (Object.keys(loginUser).length) {
    return true;
  } else {
    return false;
  }
}

// 회원가입

router.post("/join", function (req, res) {
  console.log(req.body);

  if (req.body == {}) {
    res.status(400).json({
      message: `회원가입에 실패하였습니다. 다시 시도해주세요.`,
    });
  } else {
    const { email, name, password, contact } = req.body;

    conn.query(
      `INSERT INTO users (email, name, password, contact) VALUES (?, ?, ?, ?)`,
      [email, name, password, contact],
      function (err, results, fields) {
        res.status(201).json(results);
      }
    );
  }
});

// 회원 개별 조회
router
  .route("/users")
  .get(function (req, res) {
    let { email } = req.body;
    /*{id} 이게 뭐냐면! 너 id값 있던데, 그 id값 바로 꺼내서 id라는변수에 바로 담아줘. 라는 뜻이야*/

    conn.query(
      `SELECT * FROM users Where email  = ?`,
      email,
      function (err, results, fields) {
        res.status(200).json(results);
      }
    );
  })

  //회원 개별 탈퇴
  .delete(function (req, res) {
    let { email } = req.body;

    conn.query(
      `DELETE FROM users Where email = ?`, //DELETE는 WHERE과 무조건 함께 써야해 안그럼 날라가 통째로
      email,
      function (err, results, fields) {
        res.status(200).json(results);
      }
    );
  });

module.exports = router;

리팩토링 후 코드

const express = require("express");
const router = express.Router();
const connection = require("../mariadb");

router.use(express.json());

router.post("/login", (req, res) => {
  const { email, password } = req.body;

  const sql = `SELECT * FROM users WHERE email=?`;
  connection.query(sql, email, function (err, results) {
    let loginUser = results[0];

    if (loginUser && loginUser.password === password) {
      res.status(200).json({
        message: `${loginUser.name}님 로그인되었습니다.`,
      });
    } else {
      res.status(404).json({
        message: "이메일 또는 비밀번호가 틀렸습니다.",
      });
    }
  });
});

router.post("/join", (req, res) => {
  if (Object.keys(req.body).length === 0) {
    res.status(400).json({
      message: "입력 값을 다시 확인해주세요.",
    });
  } else {
    const { email, name, password, contact } = req.body;

    const sql = `INSERT INTO users (email, name, password, contact) VALUES (?, ?, ?, ?)`;
    connection.query(
      sql,
      [email, name, password, contact],
      function (err, results) {
        res.status(201).json(results);
      }
    );
  }
});

router
  .route("/users")
  .get((req, res) => {
    let { email } = req.body;

    const sql = `SELECT * FROM users WHERE email=?`;
    connection.query(sql, email, function (err, results) {
      res.status(200).json(results);
    });
  })
  .delete((req, res) => {
    let { email } = req.body;

    const sql = `DELETE FROM users WHERE email=?`;
    connection.query(sql, email, function (err, results) {
      res.status(201).json(results);
    });
  });

module.exports = router;
profile
Dive Head First | Work Super Hard | Attract Great People

0개의 댓글