-
글쓴이글
-
2021년 3월 24일 11:05 #7421
Maldive참가자수정 성공 잘 되지만,
터미널 결과
{ _id: 74, title: 'TypeScript', date: '2021' }
⭐null
TypeError: 바탕 화면\project\toDo\views\edit.ejs:3332| <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
},2021년 3월 24일 11:14 #7424
codingapple키 마스터edit 페이지군요 edit 페이지를 띄울 때 기존 게시물의 _id, title, date를 보여주어야합니다
근데 기존 게시물에 있는 _id title date가 없다고 에러가 나오는 것 같은데
그렇다면 서버에서 edit.ejs 파일을 보내줄 때 게시물 데이터도 DB에서 잘 끄집어내서 보내주었는지 확인해야합니다
2021년 3월 24일 19:20 #7433
Maldive참가자말씀데로 수정성공할 때가 아니고 /edit/75 띄울 때 터미널 에
'_id' of null 이 뜨는 거였어요!
근데 이렇게 잘 꺼내주고 있어요.
{ _id: 75, title: 'TypeScriptJAVASCRIPTㅎㅎㅎㅎ', date: '2021 4' }
nullTypeError: \toDo\views\edit.ejs:33
>> 33| <input value="<%= post._id %>" name="ID" style="display : none">
Cannot read property '_id' of null
2021년 3월 24일 19:29 #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(결과);
});
});2021년 3월 24일 21:52 #7446
codingapple키 마스터그렇다면 _id가 75인 게시물이 db에 없어서 에러를 띄워주는 경우밖에 없는듯요
/edit 페이지 잘 보이고 수정도 잘 되면 큰 문제없습니다
2021년 3월 25일 06:22 #7452
Maldive참가자db 에도 있고, 잘 꺼내 주고, 저장 수정 삭제 다 되는데 id_null 이 떠서 이상했어요
별 문제 없다니 안심이 됩니당 . 답변 감사해요! ?
2021년 3월 26일 00:17 #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
2021년 3월 26일 10:56 #7499
codingapple키 마스터ejs 문법으로 박아넣은 <%= POST.title %> 데이터는 페이지 첫 방문시 렌더링되어서 보여야합니다
근데 안보이거나 에러가 나면 POST 라는 데이터를 서버에서 못보냈거나 db에 없는거 둘 중 하나일걸요
터미널에 출력했을 때
{ _id: 75, title: ‘TypeScriptJAVASCRIPTㅎㅎㅎㅎ’, date: ‘2021 4’ }
nullnull이라는 글자가 나오는거 보니까 /edit 요청 처리하는 코드를 다른 곳에 중복해서 두세개 만들어두셨거나 그런 경우도 있을듯요
-
글쓴이글
- 답변은 로그인 후 가능합니다.