본문 바로가기
학원에서 배운 것/node.js

[포스코 x 코딩온] 주차 정리 회원 관리 서버 정리

by 쿠리의일상 2023. 3. 10.
// main
const express = require('express');
const userRouter = require('./router/user');

const app = express();

const PORT = 4000;

app.set('view engine', 'ejs');

app.use(express.static(__dirname + '/public'));
app.use('/users', userRouter);

app.get('/', (req, res) => {
  res.send('회원 관리 서버 구현');
});

app.listen(PORT, () => {
  console.log(`서버가 ${PORT} 에서 구동 중`);
});​
// users.js
// @ts-check
const express = require('express');

const router = express.Router();
const add = express.Router();
const modify = express.Router();
const delet = express.Router();

router.use('/add', add);
router.use('/modify', modify);
router.use('/delete', delet);

// Temp Data
let USER_DATA = {
  1: {
    name: '홍길동',
    gender: 'male',
  },
  2: {
    name: '강아지',
    gender: 'female',
  },
};

// 회원 목록 확인
router.get('/', (req, res) => {
  res.render('users.ejs', {
    USER_DATA,
  });
});

// 회원 추가
add.post('/', (req, res) => {
  if (!req.query) return res.send('쿼리문 오류');

  const newUser = {
    name: req.query.name,
    gender: req.query.gender,
  };

  USER_DATA[Object.keys(USER_DATA).length + 1] = newUser;

  res.send('회원 추가 완료');
});

// 회원 수정
modify.put('/:id/:name/:gender', (req, res) => {
  if (!req.params.id || !req.params.name || !req.params.gender)
    return res.send('쿼리문 오류');

  if (req.params.id in USER_DATA) {
    USER_DATA[req.params.id] = {
      name: req.params.name,
      gender: req.params.gender,
    };

    res.send('회원 수정 완료');
  }
});

// 회원 삭제
delet.delete('/:id', (req, res) => {
  if (!req.params.id) return res.send('쿼리문 오류');

  if (req.params.id in USER_DATA) {
    delete USER_DATA[req.params.id];
    res.send('회원 삭제 완료');
  }
});

module.exports = router;
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>회원 정보</title>
</head>
<body>
  <h1>회원 정보 출력</h1>
  <h3>
    총 회원 수 --- <%= USER_DATA.length %>
  </h3>
  <ul>
    <% if(USER_DATA.length <= 0) { %>
      <li>
        회원 정보가 없습니다.
      </li>
    <% } %>
    <% for(key in USER_DATA) { %>
      <li>
        <p>
          이름 : <%= USER_DATA[key].name %>
        </p>
        <p>
          성별 : <%= USER_DATA[key].gender %>
        </p>
    <% } %>
    </li>
  </ul>
</body>
</html>

 

오늘 배운 내용 리마인드겸 해냄... 어렵다..🥲