const express = require('express');
const app = express();
app.listen(1234);
let youtuber1 = {
channelTitle: "십오야",
subscriber: "593만명",
videoNum: "993개"
}
let youtuber2 = {
channelTitle: "침착맨",
subscriber: "227만명",
videoNum: "6600개"
}
let youtuber3 = {
channelTitle: "테오",
subscriber: "100만명",
videoNum: "1100개"
}
let db = new Map();
let id = 1
db.set(id++, youtuber1);
db.set(id++, youtuber2);
db.set(id++, youtuber3);
app.get('/youtuber/:id', function (req, res) {
let { id } = req.params;
id = parseInt(id);
//console.log(id);
const youtuber = db.get(id);
if (youtuber == undefined) {
res.json({
message: "Wrong Access"
})
} else {
res.json(youtuber);
}
})
app.get('/youtubers', function (req, res) {
let start = 0;
res.json(db);
console.log(db);
})
app.use(express.json()); //req로 날아오는 body 값을 json으로 읽자
// http 외 무듈인 '미들웨어' : json 설정
app.post('/youtuber', function (req, res) {
//body에 숨겨져서 들어온 데이터를 화면에 출력해볼까
console.log(req.body); //
//등록..? Map(db)에 저장(set)을 해야한다.
db.set(id++, req.body);
res.json({
message: `${req.body.channelTitle}님, 유튜버 생활을 응원합니다`
});
})
GET 메소드를 통해 db에 있는 값들을 전달해 주는것이 목표가 될것 같다.console.log(db.values());
[Map Iterator] {
{ channelTitle: '십오야', subscriber: '593만명', videoNum: '993개' },
{ channelTitle: '침착맨', subscriber: '227만명', videoNum: '6600개' },
{ channelTitle: '테오', subscriber: '100만명', videoNum: '1100개' }
}
맵의 value값들만 출력하는 메서드
console.log(db.set());
Map(4) {
1 => { channelTitle: '십오야', subscriber: '593만명', videoNum: '993개' },
2 => { channelTitle: '침착맨', subscriber: '227만명', videoNum: '6600개' },
3 => { channelTitle: '테오', subscriber: '100만명', videoNum: '1100개' },
undefined => undefined
}
app.get('/youtubers', function (req, res) {
let start = 0;
db.forEach(function (youtuber) {
console.log(youtuber);
})
let jsonObject = {};
db.forEach(function (value, key) {
jsonObject[key] = value;
});
res.json(jsonObject)
})
app.get("/youtubers", (req, res) => {
res.json(Object.fromEntries(db));
});
/**
*
* 배열
*/
const arr = [1, 2, 3, 4, 5];
arr.forEach((a,b,c)=> { // 앞에는 데이터, 뒤에는 인덱스, c는 배열 전체
console.log(`a : ${a}, b : ${b}, c: ${c}`);
})
console.log('==============');
//Map과 foreach
let map = new Map();
map.set(7, "seven");
map.set(8, "eight");
map.set(9, "nine");
map.forEach((a,b) => {// 첫번째는 value, 두번째는 key
console.log(`a : ${a}, b : ${b}`);
})
// map 함수(메소드) vs forEach
const arr = [1, 2, 3, 4, 6];
const forEachArr = arr.forEach((a,b,c)=> { // 앞에는 데이터, 뒤에는 인덱스, c는 배열 전체
//console.log(`a : ${a}, b : ${b}, c: ${c}`);
return a * 2;
})
//console.log('==============')
console.log(arr);
const mapArr = arr.map((a,b,c)=> { // 앞에는 데이터, 뒤에는 인덱스, c는 배열 전체
//console.log(`a : ${a}, b : ${b}, c: ${c}`);
return a * 2;
})
console.log(arr);//map은 새로 생성되는 객체를 리턴한다.
//forEach로 return 하면 undefined,
//map으로 return하면 2,4,6,8,12
console.log(`forEach로 return 하면 ${forEachArr},
map으로 return하면 ${mapArr}`);
app.delete('/youtubers/:id', function (req, res) {
let { id } = req.params;
id = parseInt(id);
const channelTitle = db.get(id).channelTitle;
db.delete(id);
res.json({
message:`${channelTitle}님 다음에 또 뵙겠습니다.`
})
})
app.delete('/youtubers/:id', function (req, res) {
let { id } = req.params;
id = parseInt(id);
let youtuber = db.get(id);
if (youtuber == undefined) {
res.json({
message: `요청하신 ${id}번은 없는 정보입니다`
})
} else {
const channelTitle =youtuber.channelTitle;
db.delete(id);
res.json({
message: `${channelTitle}님 다음에 또 뵙겠습니다.`
})
}
})
req: X
res: 모든 정보가 삭제되었습니다.
app.delete('/youtubers', function (req, res) {
// db에 값이 1개 이상이면, 전체 삭제
// 값이 없으면 예외처리
if (db.size >= 1) {
db.clear();
res.json({
message: '전체 유튜버가 삭제되었습니다.'
})
} else {
res.json({
message: '삭제할 유튜버가 없습니다.'
})
}
})
app.put('/youtubers/:id', function (req, res) {
let { id } = req.params;
id = parseInt(id);
let youtuber = db.get(id);
let prevChannelTitle = youtuber.channelTitle
if (youtuber == undefined) {
res.json({
message: `요청하신 ${id}번은 없는 정보입니다`
})
} else {
let newChannelTitle = req.body.channelTitle;
youtuber.channelTitle = newChannelTitle;
db.set(id, youtuber);
res.json({
message: `${prevChannelTitle}님, 채널명이 ${newChannelTitle}로 변경되었습니다`
})
}
})
