for (var id in cart){ ~ }부분 내용에서 에러가 발생 할 수 있네요.
Cart 배열이 3개 이상이면 products[id].title을 못 불러옵니다.
title은 2개만 있으니까요.
cart 배열이 3개 이상이라는 뜻은 누군가 의도적으로 없는 id의
cookie값을 계속 늘릴 수 있다는 것입니다.
예컨대 /cart/3을 들어가면 cart 배열이 [1,2,3] 3개가 생기므로
title에 접근할 수 없습니다.
차라리 for (var id in products){if (cart[id]>0) }가 나을듯 싶습니다.
for A in B 문을 사용하면 B객체 내부에서 각 값을 만날때마다 그 값을 A에 정의해서 사용하게 됩니다.
다시 말하면, for var name in products를 하면 각 li 엘리먼트 속에서 이미 products.X 를 가지고 다시 돌게 됩니다.
때문에 만약 products={ name1 : {family : 'kim', nick : 'sun'}, name2 : {family : 'hong', nick : 'moon' }} 이고 각 객체를 돌게 하시려면,
for (let name in products){ <li>name.family</li> + <li>name.nick</li> } 처럼 하셔야 합니다.
컴퓨터 포맷을 하면서 기존 소스를 다시 셋팅해서 개발하던 중에 app_cookie.js 에서
var output = '';
for(var name in products){
output += `<li>${products[name].title}</li>`;
//console.log(products[name].title);
}
그레인트 엑센트 부분에서 에러가 납니다.
왜 그런지 궁금합니다.
삭제도 구현해 봤는데 잘한건지 모르겠네요ㅋㅋ 수업 잘 보고 있습니다~
첨엔 undefined 말고 0으로 했다가 ''로도 해봤다가ㅜㅜ
app.get('/cart/:id/delete', function(req, res){
var id = req.params.id
var cart = req.cookies.cart
cart[id] = undefined;
res.cookie('cart', cart)
res.redirect('/cart')
})
cart=j%3A%7B%221%22%3A1%2C%225%22%3A1%2C%227%22%3A4%7D; 의 내용을
cart={"1":1,"5":1,"7":4} 이렇게 표현하려면 javascript에서 어찌 처리해야하는지
<모안이 적용되지 않은 부분입니다.>
아시는분 계시면 알려주시기 바랍니다.