수정기능의 순서
1.글마다 있는 수정버튼 누르면 글수정할 수 있는 페이지로 이동
app.get('/edit/:id', (요청, 응답) => {
응답.render('edit.ejs')
})
- 그 페이지엔 글의 제목과 내용이 이미 폼에 채워져있어야함
app.get('/edit/:id',async(req, res)=>{
let result = await db.collection('post').findOne({_id : new ObjectId(req.params.id) })
res.render('edit.ejs',{result:result})
})

(edit.ejs)
(생략)
<input name="title" value="<%= result.title %>">
<input name="title" value="<%= result.content %>">
// value에 저렇게 데이터를 넣어줘야 view단에서 데이터가 나온다.
- 전송누르면 그걸로 기존에 있던 document를 수정해줌
유저가 어떻게 DB에 저장되는 ID를 알아서 데이터를 찾아줄까?
<input name="id" value="<%= result._id type= hidden%>">
app.post('/edit', async(req,res)=>{
// try{
let result = await db.collection('post').updateOne({_id : new ObjectId(req.body.id)},
{$set: {title: req.body.title,
content : req.body.content}})
method override
put,delete를 사용하는 방법 ajax를 사용하거나, method를 강제로 변경해주는 라이브러리를 사용한다.
const methodOverride = require('method-override')app.use(methodOverride('_method')) <form action="/edit?_method=PUT" method="POST"> </form>updateOne 추가 문법
db.collection('컬렉션명').updateOne(
{ _id : new ObjectId('수정할 document _id') },
{ $set: { like : 1 } }
)
db.collection('컬렉션명').updateOne(
{ _id : new ObjectId('수정할 document _id') },
{ $inc: { like : 1 } }
)
$mul 쓰면 기존값에 곱셈
여러 document 동시 수정은 updateMany
db.collection('컬렉션명').updateMany(
{ title : '멍청아' },
{ $set: { title : '착한친구야' } }
)
조건에 맞는 것만 updateMany하기
db.collection('컬렉션명').updateMany(
{ like : { $gt: 5 } },
{ $set: { like : 100 } }
)