DB에 저장되어 있는 값 전체조회!

데브코스

목록 보기
29/131

url를 적을때는 전체조회를 생각해서, 복수형으로 적어둔 다음에 (예를들어 상품들 보여주거나, 유튜버들 보여주거나 할때)
id값을 각각 부여해서 각 상품이나 유튜버들을 보여주는 것이 더 맞아. 그래서 복수형을 보통 많이 사용하고,

전체 조회를 할때는 req는 따로 필요없고,
res로 map을 전체 조회하면 보여줄 수 있지 않을까?


자 그래서

app.get("/youtubers", function (req, res) {
  console.log(db.set());
  res.json(db.set());
});

이렇게 적어봤는데, 이게 콘솔에서는 뜨지만 포스트맨에서는 제대로 보여주지 않고 있어.
그럼 이게 값을 불러오는 것은 맞지만, 포스트맨에서는 이게 아직 db를 못 불러오는구나. 를 알 수 있고,
그럼 어떻게 해결하면 될까?

app.get("/youtubers", function (req, res) {
  var youtubers = {};
  db.forEach(function (value, key) {
    youtubers[key] = value;
  });

  res.json(youtubers);
  /*
  res.json(JSON.stringify(jsonObject));   JSON.stringify()  : json 형태로 바꿔주는 메서드 인데, 확인해보니 안예뻐서 안써도 될듯
}); */
});

이렇게 하니까 이제 전체 조회를 할 수 있게 되었어.
너무 좋다 그치? for Each로 function의 밸류와 키 값을 불러오고, youtubers 라는 변수에 json형식으로 키 밸류를 담고,

res.json(youtubers);를 하니까 잘 나오더라구
너무 좋네.

이 상태에서 새로운 유튜버를 하나 더 추가하고 싶으면 과연 잘 추가가 되서 전체조회에서 나올까?
확인하면 되지

  1. POST로 잘 추가가 되었고,
  2. 개별 조회도 잘 되었고,
  3. 전체 조회에서도 잘 추가 되어서 나온다!!

전체코드

//express 모듈 셋팅

const express = require("express");
const app = express();

//서버 셋팅 : 포트 넘버(번호) 3000으로 셋팅
app.listen(3000);

let youtuber1 = {
  channelTitle: "십오야",
  sub: "713만명",
  videoNum: "1000개",
};

let youtuber2 = {
  channelTitle: "침착맨",
  sub: "300만명",
  videoNum: "8000개",
};

let db = new Map(); //map은 key - values 쌍으로 이루어진 자료구조, 즉 json같은 느낌이다.
var id = 1;

db.set(id++, youtuber1);
db.set(id++, youtuber2);

// GET + "/"  및  REST API 설계  -> 파라미터는 문자열로 들어오기 때문에, 숫자열로 바꿔줘야해 id를
app.get("/youtubers", function (req, res) {
  var youtubers = {};
  db.forEach(function (value, key) {
    youtubers[key] = value;
  });

  res.json(youtubers);
  /*
  res.json(JSON.stringify(jsonObject));   JSON.stringify()  : json 형태로 바꿔주는 메서드 인데, 확인해보니 안예뻐서 안써도 될듯
}); */
});
app.get("/youtuber/:id", function (req, res) {
  let { id } = req.params;
  id = parseInt(id);

  const youtuber = db.get(id);

  if (youtuber == undefined) {
    res.json({
      message: "유튜버 정보를 찾을 수 없어",
    });
  } else {
    res.json(youtuber);
  }
});

app.use(express.json()); //http 외 모듈인 '미들웨어':json 설정
app.post("/youtuber/", function (req, res) {
  // BODY에 숨겨져서 들어온 데이터를 화면에 뿌려줘볼까?

  console.log(req.body);
  //이제 등록을 해줘야 하는데 Map(db)에 저장(put) 해주셔야 함.
  db.set(id++, req.body); //4라는 id값을 가지고 있는 새로운 유튜버를 db에 저장하는 코드(객체를 넣어줘야해)
  res.json({
    message: `${db.get(id - 1).channelTitle} 님 유튜버 생활을 응원합니다!`,
  });
});
profile
Dive Head First | Work Super Hard | Attract Great People

0개의 댓글