VaIice의 이야기

[Node.js] 게시글 수정 만들기 본문

[Node.js]

[Node.js] 게시글 수정 만들기

VaIice 2024. 7. 15. 17:11

 1. 수정 페이지 만들기 

// server.ejs

app.get('/detail/modify/:id', async (request, response) => {
  try {
    let result = await db.collection('main').findOne({ _id: new ObjectId(request.params.id) });
    response.render('modify.ejs', { post: result })
  }
  catch {
    response.redirect('/')
  }
})

app.post('/modify', async (request, response) => {
  try {
    await db.collection('main').updateOne({ _id: new ObjectId(request.body.id) }, { $set: { title: request.body.title, content: request.body.content } })
    console.log(request.body.id)
    response.render('modify.ejs', { post: result })
    response.redirect('/')
  }
  catch {
    response.redirect('/')
  }
})

 

 updateOne({찾을 내용}, {$set: 바꿀 내용}): 업데이트 

 $set: 덮어쓰기 

 

// modify.ejs

   
<div class="white-bg">
    <div class="list-box">
        <form class="form-box" action="/modify" method="POST">
            <h4>수정하기</h4>
            <input type="text" name="id" value="<%=post._id%>">
            <input type="text" name="title" value="<%= post.title%>">
            <input type="text" name="content" value="<%= post.content%>">
            <button type="submit">전송</button>
        </form>
    </div>
  </div>
 

 

 

 2. form에서의 PUT과 DELETE 

 npm install method-override 

// server.js

const methodOverride = require('method-override')

app.use(methodOverride('_method'))
 

 

// mofify.ejs

        <form class="form-box" action="/modify?_method=PUT" method="POST">
 

 

 ?_method=PUT 추가 

 

 

 3. 연산자 

 $inc: 덧셈, 뺄셈 

 $mul: 곱셈 

 $unset: 삭제 

 

 4. 여러 개 수정 

 
await db.collection('main').updateMany({ _id: 1 }, { $set: { title: 1 } })
 

 

 updateMany({찾을 내용}, {수정 내용}) 

 

 5. 필터링 

 
    await db.collection('main').updateMany({ _id: {$gt: 10} }, { $set: { title: 'hi' } })
 

 

 $gt: greater than, 10 초과 

 $gte: greater than / equal, 10이상 

 $lt: less than, 10 미만 

 $lte: less than / equal, 10이하 

 $ne: not equal, 10이 아닌 

 

 

 요약 

 method-override로 form에서 PUT / DELETE 가능 

 document 하나 수정: updateOne() 

 document 여러 개 수정: updateMany() 

 $set, $inc, ...으로 수정 방법 결정 가능 

 $gt, $le, ...으로 필터링 결정 가능