• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Node.js, Express 게시판 요청한 페이지 없을 시, 처리방법에 대해 질문있습니다.

요청한 페이지 없을 시, 처리방법에 대해 질문있습니다.

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #31218

    우효창
    참가자

    app.get('/detail/:id', function(req, res){   
           
            db.collection('post').findOne( {_id : parseInt(req.params.id)}, function(에러, 결과){   // req.params.id는 /detail의 파라미터값 = 사용자가 입력한 값,,,
               
                if(결과 == null) {return res.status(404).send('요청 페이지 없음')};
              res.render('detail.ejs', { data : 결과 }); //DB(몽고DB)에서 찾은 데이타를 지금 이 페이지에서 data(=변수)라고 이름을 지었음 . 그 변수 안에 결과오브젝트를 집어넣은것이고 그리고 그걸 detail.ejs로 보냄
                console.log(결과)
               
            });
           
        });

    고생 많으십니다!
    클라이언트가 입력한값의 정보가 서버에 없을때를 처리하는 과제를 하는중이었습니다.
    일단 위 코드는 기능은 잘 작동되는? 코드입니다.

    1. 결과 == null 이 아닌 에러 파라미터를 이용하여 요청페이지없음을 나타내는 방법이 있을까요?

    2. if( 결과._id == null )는 왜 안될까요.. "찾은 결과안의 _id값이 비었을 경우" 를 의도했고,
    TypeError: Cannot read properties of undefined (reading '결과._id') 가 뜹니다

    2. 코드를 해석하는 이 브라우저?주체?는 일반적으로는 function의 첫 파라미터,에러에 대한 판단을 어떻게 하나요?
    코드를 작성하다보니 에러를 if로 직접 정의해서 처리한 느낌이 들어서요!
    그래서 1번과 같은 궁금증이 생겼습니다.

    다 여쭤보는것 같지만 요것만 2시간 잡았습니다 ㅜㅜ

    #31225

    codingapple
    키 마스터

    에러파라미터는 db가 다운되어있거나 자료가 이상한 경우에 쓰면 되고 

    findOne할 때 db에 찾는자료가 없는 경우는 그냥 결과 == null 이걸로 판단하면 끝입니다 

    그 에러는 결과라는 변수가 null이나 그런 경우에 object가 아니니까 ._id를 붙일 수가 없어서 그런에러가 뜰듯요 

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠