1️⃣ Map이란?

2️⃣ Map 사용해보기
let db = new Map()
db.set(1, "NoteBook") // 키(id)로 밸류를 찾을 수 있는 한 쌍을 저장함
db.set(2, "Cup")
db.set(3, "Chair")
console.log(db)
console.log(db.get(1)) // get을 쓰면 매개변수()가 꼭 필요함
console.log(db.get(2))
console.log(db.get(3)) // 밸류값을 하나씩 꺼내서 사용할 수 있음
// 키:밸류 쌍으로 저장하지만, 저장 결과를 보면 : 대신 =>를 사용


3️⃣ Map 고도화 해보기
let db = new Map()
db.set(1, "NoteBook") // 키(id)로 밸류를 찾을 수 있는 한 쌍을 저장함
db.set(2, "Cup")
db.set(3, "Chair")
db.set("3", "FakeChair")
console.log(db)
console.log(db.get(1)) // get을 쓰면 매개변수()가 꼭 필요함
console.log(db.get(2))
console.log(db.get(3)) // 밸류값을 하나씩 꺼내서 사용할 수 있음
console.log(db.get("3")) // db에서는 문자열 숫자를 정수로 인식하지 않음 주의해야 함
// 키:밸류 쌍으로 저장하지만, 저장 결과를 보면 : 대신 =>를 사용

const express = require('express')
const app = express()
app.listen(1234)
app.get('/:id', function (req, res) { // 코드를 작성할 때 id 값을 받을 경우
let {id} = req.params // 원래 {id} 변수를 const로 지정하였으나 뒤에서 id를 정수로 변경하게 되어 let으로 선언
console.log(id) // id 값을 받을 경우 id 값이 잘 들어오는지 테스트 먼저 해야함
id = parseInt(id) // db에서는 문자열 숫자를 정수로 인식하지 않으므로 "숫자" -> 정수
if (db.get(id) == undefined){ // 이전에 배운 여러객체들과는 다르게 if문 없이 사용도 가능하지만, db에 존재하지 않는 id의 예외처리를 위해 if else문 작성
res.json({
message : "없는 상품이네영"
})
} else {
res.json({ // 웹페이지 뒤에서 받아오는 id 값을 그대로 표출하고 get으로 그대로 가져오니 코드가 간단해짐
id : id,
productName : db.get(id)
})
}
})
let db = new Map()
db.set(1, "NoteBook")
db.set(2, "Cup")
db.set(3, "Chair")
1️⃣ Map을 Table처럼 만들어보자
Value값을 문자열로만 저장하는 것이 아닌 테이블 형태로 더 많은 데이터를 담아볼 수 있음

Map에 문자열만 저장하는 것이 아닌 객체처럼 여러 값들을 저장하면 됨

방법은 쉬운 편 그냥 객체를 만들면 됨
let db = new Map()
let notebook = {
productName : "NoteBook",
price : 2000000
}
let cup = {
productName : "Cup",
price : 7000
}
let chair = {
productName : "Chair",
price : 100000
}
let poster = {
productName : "Poster",
price : 20000
}
db.set(1, notebook) // 문자열이었던 것들도 변수로 변경해줌
db.set(2, cup)
db.set(3, chair)
db.set(4, poster)
2️⃣ Express + 객체
const express = require('express')
const app = express()
app.listen(1234)
app.get('/:id', function (req, res) {
let {id} = req.params
id = parseInt(id)
res.json(db.get(id)) // db.get(id) 자체가 키:밸류이기 떄문에 {}로 양식을 만들지 않아도 됨
})
let db = new Map()
let notebook = {
productName : "NoteBook",
price : 2000000
}
let cup = {
productName : "Cup",
price : 7000
}
let chair = {
productName : "Chair",
price : 100000
}
let poster = {
productName : "Poster",
price : 20000
}
db.set(1, notebook)
db.set(2, cup)
db.set(3, chair)
db.set(4, poster)
app.get('/:id', function (req, res) {
let {id} = req.params
id = parseInt(id) // "숫자" -> 정수
if (db.get(id) == undefined){
res.json({
message : "없는 상품이네영"
})
} else {
product = db.get(id) // 상품이라는 변수처럼 선언이 가능함
product.id = id // 객체를 이런식으로 추가할 수 있음
product["id"] = id // 배열처럼 대괄호로 추가해도 됨
res.json(product) // 위에서 db에서 가져오는 id를 product로 선언하여 간편해짐
}
})

3️⃣ express + map + 객체 추가 실습 : 유튜버
// express 모듈 세팅
const express = require('express')
const app = express()
app.listen(2223)
// 데이터 세팅
let youtuber1 = {
title : "조코딩",
sub : "609k",
videonum : "111개"
}
let youtuber2 = {
title : "침착맨",
sub : "2270k",
videonum : "6600개"
}
let youtuber3 = {
title : "아무개",
sub : "300k",
videonum : "50개"
}
let db = new Map()
db.set(1, youtuber1)
db.set(2, youtuber2)
db.set(3, youtuber3)
// REST api 설계
app.get('/youtuber/:id', function (req, res){
let {id} = req.params
id = parseInt(id) // id를 그냥 쓰면 숫자가 아닌 문자열로 받기 때문에 정수로 바꿔줌
const youtuber = db.get(id) // youtuber 로 db.get을 정리하여 중복을 없앰(가독성 증가)
if (youtuber == undefined) {
res.json({
message : "정보를 찾을 수 없습니다"
})
} else {
res.json(youtuber)
}
})
1️⃣ express 구조 이해해보기
복잡한 기능을 하는 거 같은데 코드는 간단하게 짜여짐 express는 어떤 모듈일까? : http에서 복잡하게 적었던 내용을 간결히 만들어준 모듈

각각의 모듈은 어딘가에 따로 구축이 되어있고 npm은 이를 모아둔 인스톨러(express는 홈페이지가 따로 있음 https://expressjs.com)
Express는 웹 서비스를 만드는데 필요한 기본적인 것들을 틀 안에 담아둔 것

이전에 배운 프레임 워크의 개념

Express의 예재 : 포트넘버 지정과 함께 화살표 콜백함수로 콘솔로그를 찍어주는 함수를 전달함

const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
아래와 같은 결과를 확인할 수 있음


어플리케이션 골격을 신속하게 작성한다는 것은, express로 하나의 프로젝트를 하기 위해서 기본적인 골격을 만들어 준다는 것

실습을 위해 새 폴더를 생성

만약 전역(-g) 설치 과정에서 에러가 발생할 경우, 'sudo'로 강제 설치
sudo npm install express-generator -g
express 명령어로 패키지 설치 완료

2️⃣ WWW, app.js 흝어보기

var app = require('../app');
var debug = require('debug')('express-base:server'); // 콘솔창에 디버그 로그를 찍어줌
var http = require('http');
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);// 포트를 설정할 수 있는 모듈, 기본은 3000이지만 우리가 바꾸는 대로 사용이 가능함
var server = http.createServer(app); // create server를 안해도 되게 만들어준 모듈
server.listen(port);
server.on('error', onError); // 에러나 이벤트 발생시 내용을 적어주는 모듈
server.on('listening', onListening);
var app = express(); // express()를 app이라는 변수에 담아줌
app.set('views', path.join(__dirname, 'views')); // app.set이라는 메서드에 프로젝트 추가 세팅을 해주는 내용
app.set('view engine', 'jade'); // 뷰 엔진에 대한 내용은 추후 리액트(프론트엔드)에서 다루게 될 것
app.use(logger('dev')); // express는 http 모듈을 기반으로 여러가지 모듈을 감싸 만든 편한 모듈인데 http를 제외한 다른 모듈을 '미들 모듈'이라 함 app.use가 미들 모듈에 해당
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
module.exports = app; // 이를 통해 미들 모듈을 다른 js에서 쓸 수 있도록 모듈화를 해줌
3️⃣ generator 돌려보기
const express = require('express')
const app = express()
const port = 1234
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})

1️⃣ 화살표 함수는?
function add1 (x,y) { // 함수의 기본 틀
return x+y
}
let add2 = function (x,y) { // 함수의 모듈화를 위해 변수를 익명함수로 선언
return x+y
}
const add3 = (x,y) => { // 화살표 함수의 표현 방식
return x+y
}
const add4 = (x,y) => x+y // 화살표 함수는 더 축약할 수 있음