반응형
조회 페이지 만들기
각각의 고유 게시글 조회 페이지 만들기
- 모든 각 페이지의 get 요청 처리를 만들 순 없다 (비효율적)
- 따라서 url 에 id 등을 파라미터로 붙여서 재사용한다
/: 원하는 파라미터 : url 파라미터 만들기
req.params.id 요청 데이터의 파리미터 중의 id 값
// 상세페이지 만들기 + 게시글번호
app.get('/detail/:id', (req, res) => {
db.collection('post').findOne({_id : parseInt(req.params.id)}, (err, result)=> {
console.log(result)
res.render('detail.ejs', { data : result })
})
})
--- html
<h4>상세페이지</h4>
<h4> title : <%= data.title%></h4>
<h4> date : <%= data.date%></h4>
수정 페이지 만들기
수정도 조회와 같은 맥락으로
- 1번단계
더보기
// edit
app.get('/edit/:id', (req, res) => {
db.collection('post').findOne({_id : parseInt(req.params.id)}, (err, result)=> {
res.render('edit.ejs', { data : result })
})
})
HTML 에서 PUT/DELETE 요청하기 위해서는 ?
// console
npm install method-override
in nodJS
// method-override : html form 에서 put 과 delete 사용하기 윟마
const methodOverride = require('method-override');
app.use(methodOverride('_method'));
in HTML
// method 는 post 그대로 action 에 추가
<form action="/eidt?_method=PUT" method="post">
// 아이디 몰래 보내기
<input type="text" value="<%= data._id% %>" style="display: none">
edit 에서 PUT 요청 받았을때
- form 에 담긴 제목, 날짜 데이터를 가지고 db.collection 에 업데이트
- updateOne ( 뭐 수정할건데? , 뭘로 수정할건데?, 콜백함수 )
// edit put 요청
app.put('/edit', (req, res) => {
db.collection('post').updateOne({ _id: parseInt(req.body.id) },
{ $set: { title: req.body.title, date: req.body.date } }, () => {
console.log('수정성공')
res.redirect('/list')
})
})
redirect : 페이지 이동함수
- 이거 안해주면 응답 값 없어서 페이지 멈출 수 있음
- 이거 꼭 / 넣어줘야 함
반응형
'JavaScript > Node.js' 카테고리의 다른 글
#노드 라우터 분리 (0) | 2023.02.20 |
---|---|
#노드 로그인 #기본 세션 로그인기능 (0) | 2023.02.19 |
#render 와 sendFile 차이 #nodejs (0) | 2023.02.12 |
#ajax #버튼 #삭제 #fadeOut # node (0) | 2023.02.12 |
#mongodb #연동 #삽입 #조회 #게시글번호 #esj (0) | 2023.02.12 |