Cookie 이용하기 2번째 장바구니 만들기
app_cookie_cart.js
var express = require('express');
var cookieParser = require('cookie-parser');//쿠키 파서 사용
var app = express();
app.use(cookieParser());//expressjs API보면 나옴
//상품들 리스트 원래는 데이터베이스여야함
var products = {
1:{title:'The history of web 1'},
2:{title:'The next web'}
};
//상품들 페이지
app.get('/products', function(req, res){
var output = ``;
for(var name in products){//products는 순회하고 싶은 객체
output += `
<li>
<a href="/cart/${name}">${products[name].title}</a>
</li>`;
//console.log(products[name].title);
}
//send로 html태그를 보냄
res.send(`<h1>Products</h1><ul>${output}</ul><a href="/cart">Cart</a>`);
});
app.listen(3003, function(){
console.log('Connected 3003 port!!!');
});
실행 화면
첫 화면
상품을 클릭하면 /cart/숫자 로 이동한다.
Cart를 클릭하면 /cart로 이동한다
이번에는 상품들을 클릭시 product의 수량을 추가시켜주는 페이지를 만들어 본다.
app_cookie_cart.js
var express = require('express');
var cookieParser = require('cookie-parser');//쿠키 파서 사용
var app = express();
app.use(cookieParser());//expressjs API보면 나옴
//상품들 리스트 원래는 데이터베이스여야함
var products = {
1:{title:'The history of web 1'},
2:{title:'The next web'}
};
//상품들 페이지
app.get('/products', function(req, res){
var output = ``;
for(var name in products){//products는 순회하고 싶은 객체
output += `
<li>
<a href="/cart/${name}">${products[name].title}</a>
</li>`;
//console.log(products[name].title);
}
//send로 html태그를 보냄
res.send(`<h1>Products</h1><ul>${output}</ul><a href="/cart">Cart</a>`);
});
/*
카트에 넣을 데이터 형식 선언해봄 제품id:구매한수
cart = {
1:2,
2:1
}
*/
app.get('/cart/:id', function(req, res){
var id = req.params.id;
if(req.cookies.cart){//이미 쿠키값이 있다면
var cart = req.cookies.cart;
}else{//최초 실행시
var cart = {};
}
if(!cart[id]){//값이 없으면 초기화해줌
cart[id] = 0;
}
cart[id] = parseInt(cart[id]) + 1;//물건의 수량을 증가시킴 쿠키는 기본적으로 문자이므로 parseInt해야됨
res.cookie('cart', cart);
//res.redirect('/cart');//이동시 cart페이지로 이동
res.send(cart);
});
app.listen(3003, function(){
console.log('Connected 3003 port!!!');
});
실행 화면
다음과 같이 뜨는 첫 화면에서 product를 클릭하면
다음과 같이 출력된다. product번호:수량 으로 출력된다.
한번 더 클릭하면 다음과 같이 카운트가 올라간다.
이번에는 상품을 클릭했을 때 카운트가 올라가는 것과 상품명을 출력해주는 /cart 라우팅부분을 구현해보자
app_cookie_cart.js
var express = require('express');
var cookieParser = require('cookie-parser');//쿠키 파서 사용
var app = express();
app.use(cookieParser());//expressjs API보면 나옴
//상품들 리스트 원래는 데이터베이스여야함
var products = {
1:{title:'The history of web 1'},
2:{title:'The next web'}
};
//상품들 페이지
app.get('/products', function(req, res){
var output = ``;
for(var name in products){//products는 순회하고 싶은 객체
output += `
<li>
<a href="/cart/${name}">${products[name].title}</a>
</li>`;
//console.log(products[name].title);
}
//send로 html태그를 보냄
res.send(`<h1>Products</h1><ul>${output}</ul><a href="/cart">Cart</a>`);
});
/*
카트에 넣을 데이터 형식 선언해봄 제품id:구매한수
cart = {
1:2,
2:1
}
*/
app.get('/cart/:id', function(req, res){
var id = req.params.id;
if(req.cookies.cart){//이미 쿠키값이 있다면
var cart = req.cookies.cart;
}else{//최초 실행시
var cart = {};
}
if(!cart[id]){//값이 없으면 초기화해줌
cart[id] = 0;
}
cart[id] = parseInt(cart[id]) + 1;//물건의 수량을 증가시킴 쿠키는 기본적으로 문자이므로 parseInt해야됨
res.cookie('cart', cart);
res.redirect('/cart');//이동시 cart페이지로 이동
//res.send(cart);
});
app.get('/cart', function(req, res){
var cart = req.cookies.cart;
if(!cart){
res.send('Empty cart');
}else{
var output = '';
for(var id in cart){
output += `<li>${products[id].title} (${cart[id]})</li>`;//상품들의 제목들과 수량을 출력해주는 부분
}
}
//편하게 하기 위해 출력해주는 부분
res.send(`
<h1>Cart</h1>
<ul>${output}</ul>
<a href="/products">Products List</a>
`);
});
app.get('/count', function(req, res){
if(req.cookies.count)//쿠키값이 있다면
var count = parseInt(req.cookies.count);//숫자로 강제로 바꿈
else{//쿠키값이 없다면
var count = 0;
}
count = count + 1;//카운트 값을 올리고
res.cookie('count', count);
res.send('count : '+ req.cookies.count);//cookies객체에 count라는 쿠키값을 가져옴
});
app.listen(3003, function(){
console.log('Connected 3003 port!!!');
});
실행 화면
여기서 상품을 클릭하면
상품명 및 (수량)을 출력해준다.
Products List를 누르면 다시 돌아간다.
출처 : https://opentutorials.org/course/2136
'프로그래밍 > Node.js' 카테고리의 다른 글
Node.js 생활코딩 정리 – 세션(session)을 데이터베이스(mysql)에 저장하기 (0) | 2016.12.03 |
---|---|
Node.js 생활코딩 정리 – 세션(session)을 파일에 저장하기 (0) | 2016.12.03 |
Node.js 생활코딩 정리 – 세션으로 로그인 애플리케이션 만들기 (0) | 2016.12.01 |
Node.js 생활코딩 정리 – Cookie 암호화 (0) | 2016.12.01 |
Node.js 생활코딩 정리 – HTTP 및 Cookie 구현하기 (0) | 2016.11.28 |
Node.js 생활코딩 정리 – 세번째 웹애플리케이션 글 삭제 기능 구현 (0) | 2016.11.27 |
Node.js 생활코딩 정리 – 두번째 웹애플리케이션 글 편집 기능 구현 (0) | 2016.11.27 |
Node.js 생활코딩 정리 – 첫번째 MYSQL을 이용해서 웹애플리케이션 구현하기 (0) | 2016.11.27 |