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

home2 게시판 Node.js, Express 게시판 Cannot read property '_id' of null 이란 터미널 메세지.

Cannot read property '_id' of null 이란 터미널 메세지.

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

    Maldive
    참가자

    수정 성공 잘 되지만, 

    터미널 결과

    { _id: 74, title: 'TypeScript', date: '2021' }
    ⭐null
    TypeError: 바탕 화면\project\toDo\views\edit.ejs:33

    32| <form action="/edit?_method=PUT" method="POST">
    >> 33| <input value="<%= post._id %>" name="ID" style="display : none">
    34| <div class="mb-3">
    ⭐Cannot read property '_id' of null

    수정 성공은 잘 되고 빨간 에러는 없는데요, 이 null 이 계속  떠요.

    property '_id' 는 DB 의 Key  '_id' 같은데요,

    DB 영구 저장할 때 _id: 요청.body.ID (_id 란 DB 의 Key에 우리가 작성한 ID를 값으로 저장) 하는 게 아니니까 그냥 놔둬도 되는 건가요? 아니면 제가 모르는 이유가 있을가요?  

    혹시 나중에라도 꼬일 일 없이 안전하게 완강하고싶어요! 

    부트스트랩, Nosql DB , node js로  만든 작성, 수정, 삭제 되는 사이트  너무 멋지네요.

    //DB에 영구저장해주세요
    db.collection('post').insertOne({
    ?_id: (총게시물갯수 + 1),
    title: 요청.body.TITLE,
    date: 요청.body.DATE
    }, 

     

     

    #7424

    codingapple
    키 마스터

    edit 페이지군요 edit 페이지를 띄울 때 기존 게시물의 _id, title, date를 보여주어야합니다

    근데 기존 게시물에 있는 _id title date가 없다고 에러가 나오는 것 같은데 

    그렇다면 서버에서 edit.ejs 파일을 보내줄 때 게시물 데이터도 DB에서 잘 끄집어내서 보내주었는지 확인해야합니다 

     

     

    #7433

    Maldive
    참가자

    말씀데로 수정성공할 때가 아니고 /edit/75 띄울 때  터미널 에

    '_id' of null 이 뜨는 거였어요!

    근데 이렇게 잘 꺼내주고 있어요. 

    { _id: 75, title: 'TypeScriptJAVASCRIPTㅎㅎㅎㅎ', date: '2021 4' }
    null

    TypeError: \toDo\views\edit.ejs:33

    >> 33| <input value="<%= post._id %>" name="ID" style="display : none">

    Cannot read property '_id' of null

     

     

    #7434

    Maldive
    참가자

    /edit/:id 띄울 때 server.js  인데요, 기계가 (요청.params.id) 이걸 모르는 걸가요? (저장, 수정, 삭제는 다 잘됨)

    // 요청한 url parameter 중 :id
    app.get('/edit/:id', function (요청, 응답) {
        db.collection('post').findOne({
            _id: parseInt(요청.params.id)
        }, function (에러, 결과) {
            응답.render('edit.ejs', {
                post: 결과
            });
            console.log(결과);
        });
    });

    #7446

    codingapple
    키 마스터

    그렇다면 _id가 75인 게시물이 db에 없어서 에러를 띄워주는 경우밖에 없는듯요

    /edit 페이지 잘 보이고 수정도 잘 되면 큰 문제없습니다 

    #7452

    Maldive
    참가자

    db 에도 있고, 잘 꺼내 주고, 저장 수정 삭제 다 되는데 id_null 이 떠서 이상했어요

    별 문제 없다니 안심이 됩니당 . 답변 감사해요! ?

    #7490

    Maldive
    참가자

    ejs 첫줄에서 null이 뜨는거였어요!  (ejs 도 보여드렸어야 했는데..)

    <input name="TITLE" value="<%= POST.title %>" 을 첫 줄로 올리니까 이제 'title' of null 이 떠요.

    list 에서 출발하는  detail이랑 edit 띄울 때만 null 이 뜨는데, 

    list.ejs 아래 에 jquery CDN- Ajax - script 코드가 있거든요.  나머진 다 분리되있고요...

     

    콘솔창이 긴코드로 덮혀서 불편한거 외에 다른 문제는 없긴한데,

    ? 질문:  detail, edit 데이터 바인딩  과정에서,  ejs 와 js 실행 속도 차이로 DB 에 없다고 인식한다 로 봐도 될가요?  이후 저의 코드  정리는 복잡하니까 제가 해보겠습니다.

    null
    TypeError: project\toDo\views\edit.ejs:37
    35| <label class="form-label">TITLE</label>
    36| <!-- 작성한 데이터 전송을 위해 form-input name="" -->
    >> 37| <input name="TITLE" value="<%= POST.title %>" type="text" class="form-control">
    38| <div class="form-text">ID: <%= POST._id %></div>
    39| <input name="ID" value="<%= POST._id %>" type="text" class="form-control" style="display : none">
    40| </div>

    Cannot read property 'title' of null

    #7499

    codingapple
    키 마스터

    ejs 문법으로 박아넣은 <%= POST.title %> 데이터는 페이지 첫 방문시 렌더링되어서 보여야합니다 

    근데 안보이거나 에러가 나면 POST 라는 데이터를 서버에서 못보냈거나 db에 없는거 둘 중 하나일걸요

    터미널에 출력했을 때 

    { _id: 75, title: ‘TypeScriptJAVASCRIPTㅎㅎㅎㅎ’, date: ‘2021 4’ }
    null

    null이라는 글자가 나오는거 보니까 /edit 요청 처리하는 코드를 다른 곳에 중복해서 두세개 만들어두셨거나 그런 경우도 있을듯요 

     

     

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

About

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

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

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