Server Side JavaScript

댓글

댓글 본문
작성자
비밀번호
  1. Wonil Shim
    쿠키로 전달 된 데이터가 문자열이라서 Int형으로 바꿔주는 것은 이해가 되는데,
    더하기를 한 후, 이것을 다시 문자열로 바꿔주지 않아도 되네요.
    @_@a...
  2. 루팡
    Shopping cart 3에서

    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) }가 나을듯 싶습니다.
  3. kind65505256@gmail.com
    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> } 처럼 하셔야 합니다.
    대화보기
    • 박인호
      1-17
      수강완료.
      감사합니다.
    • 초보
      app.get('/cart/delete/:id', (req, res) => {
      var id = req.params.id;
      var cart = req.cookies.cart;
      if(cart[id])
      {
      delete cart[id];

      res.cookie('cart', cart);
      res.redirect('/cart');
      }
      });
    • 코딩하는오징어
      오 좋네요 ㅎㅎ 저는 cart[id] -= 1 로 해서 수량을 빼는 거를 했었는데 reset하는 것도 추가해야겠습니다.
      대화보기
      • 감사합니다 저도 0으로 했는데 안돼서 고민하고 있었는데 덕분에 해결했습니다!!
        대화보기
        • 김말똥
          전 이렇게 해봤습니다.... 쿠키삭제?..라기보다 재정의?...

          app.get('/delete/:id', function(req, res){
          var id = req.params.id;
          var cart = req.cookies.cart;
          var cart_buffer ={};
          for(gid in cart){
          if(id == gid) continue;
          cart_buffer[gid] = cart[gid];
          }
          res.cookie('cart', cart_buffer);
          res.redirect('/cart');
          });
        • ${products[id].title} 부분에서 오류나시는분은 쿠키를 삭제했다 다시 해보세요
          저는 주소창에 cart/3을 입력했다가 데이터가 들어가서 안된거였더라구요
        • 오씨
          컴퓨터 포맷을 하면서 기존 소스를 다시 셋팅해서 개발하던 중에 app_cookie.js 에서
          var output = '';
          for(var name in products){
          output += `<li>${products[name].title}</li>`;
          //console.log(products[name].title);
          }
          그레인트 엑센트 부분에서 에러가 납니다.
          왜 그런지 궁금합니다.
        • 생활코딩짱짱맨
          혼자서 딜리트를 만들어 본 과정이 많은 도움이 되었습니다.

          제가 구상한 코드입니다.

          카트의 아웃풋에

          <li>
          ${products[id].title}
          (${cart[id]})
          <a href="/del/${id}"> del </a>
          </li>`;

          del이라는 부분으로 id로 접근 할 수 있는 html을 짯습니다.

          app.get('/del/:id',function(req,res){
          var id = req.params.id;
          var cart = req.cookies.cart;

          if(!cart){res.send('null')}
          else{
          cart[id] =0;
          res.cookie('cart', cart);
          }
          res.redirect('/products');

          });

          이렇게 지워줬습니다.
        • 군옥수수
          어쩔때는 1이 증가하고 2가 증가하고 주소창에 입력만해도 증가가 되는데 왜이러는거죠? ㅜㅜ redirect에서 문제가 생긴건가요? redirect를 /products로 하면 이런 현상이 안일어나는데 이유가 궁금합니다
          대화보기
          • 군옥수수
            저도 카트에서 주소창에 cart/1 , cart/2 이런식으로 접근하면 2씩 증가가 되던데 왜그런건가요?
          • Boswell
            아 로그를 통해서 확인해보니 주소창에 "cart/1"을 치자마자 카운트 로직이 동작을 하네요. 주소창에 엔터를 치지않아도 통신이 이뤄져서 그런가요?
          • Boswell
            우선 egoing님, 좋은 강의 만들어주셔서 감사합니다.
            그런데 강의 실습을 하던 중에 최초 생성했던 cart 쿠키를 삭제하고 다시 생성하면,
            해당 id의 값이 2만큼 카운트됩니다. 어찌된 영문인지 모르겠네요.
          • rhizomego
            이렇게 해결했네요.

            var id = req.params.id;
            if(req.cookies.cart) {
            if(req.cookies.cart === undefined) {
            var cart = {};
            } else {
            var cart = req.cookies.cart;
            }
            } else {
            var cart = {};
            }
            if(!cart[id]){
            cart[id] = 0;
            }
            cart[id] = parseInt(cart[id])+1;
            res.cookie('cart', cart);
            res.send(cart);
            });
            대화보기
            • rhizomego
              깃 허브에 있는 소스를 그대로 갖다 붙였는데도 결과값은 계속 undefied로 나오는데
              아무도 이런 결과는 안나오는 건가요?

              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;
              res.cookie('cart', cart);
              res.send(cart);
              });
            • 박첩구드
              감사합니다
            • 이정현
              삭제도 구현해 봤는데 잘한건지 모르겠네요ㅋㅋ 수업 잘 보고 있습니다~
              첨엔 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')
              })
            • 민윤홍
              첫번째 비디오에서 for ... in 구문을 자바스크립트 오브젝트 요소에 쓰면, 순서가 보장되지 않습니다~
            • 51줄을 cart[id]=0;으로 바꿔보세요!
              대화보기
              • 호동
                위 수업을 따라하며 코드를 작성했는데요. 계속 오류가 발생하는데 뭐가 문제인지 모르겠습니다. 올라온 소스코드와는 동일한 것 같은데 어디를 수정해야 하는지 좀 알려주세요.

                아래는 소스코드 입니다.
                http://ideone.com/68jx42
              • INTRO에서 말씀하신 ADD랑 델리키 기능은 강의로 안나와있습니다.
              • 초보웹 개발자
                폭풍 감자님 감사합니다
              • 폭풍감자
                encoding 되어 있는거네요.
                http://meyerweb.com......er/ 이 사이트 가셔서
                cookie의 내용을 복사하신 뒤에 decoding 하시면 되구요.
                javascript Api는 encoding 반대함수를 찾으시면 됩니다.
                대화보기
                • 초보웹 개발자
                  app.get('/cart/:id', function(req, res){

                  res.cookie('cart', cart);
                  Set-Cookie:cart=j%3A%7B%221%22%3A1%2C%225%22%3A1%2C%227%22%3A4%7D; Path=/
                  res.send(cart);
                  {"1":1,"5":1,"7":4} --> 브라우저 모니터
                  //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에서 어찌 처리해야하는지
                  <모안이 적용되지 않은 부분입니다.>
                  아시는분 계시면 알려주시기 바랍니다.
                버전 관리
                egoing
                현재 버전
                선택 버전
                graphittie 자세히 보기