
<a href="/edit/<%=글목록[i]._id>✏️</a>
//server.js
app.get('/edit/:id', (요청, 응답) => {
응답.render('edit.ejs')
})
//server.js
app.get('/edit/:id', async (요청, 응답) => {
let result = await db.collection('post').findOne({ _id : new ObjectId(요청.params.id) })
응답.render('edit.ejs', {result : result})
})
<input name="title" value="<%= result.title %>">
<input name="title" value="<%= result.content %>">
db.collection('컬렉션명').updateOne(
{ 변경할 조건 },
{ $set: { 덮어쓸 내용 } }
)
db.collection('post').updateOne( {a:1}, {$set: {a:4}})
db.collection('post').updateOne( {a:1}, {$set: {title:'c'}})
//edit.ejs
<form class="form-box" action="/edit?_method=PUT" method="POST">
<h4>수정하기</h4>
<input name="id" value="<%= result._id %>">
<input name="title" value="<%= result.title %>">
<input name="content" value="<%= result.content %>">
<button type="submit">전송</button>
</form>
//server.js
app.post('/edit', async (요청, 응답)=>{
await db.collection('post').updateOne({ _id : new ObjectId(요청.body.id) },
{$set : { title : 요청.body.title, content : 요청.body.content }
})
응답.redirect('/list')
})
npm install method-override
const methodOverride = require('method-override')
app.use(methodOverride('_method'))
<form action="/edit?_method=PUT" method="POST"> </form>
db.collection('컬렉션명').updateOne(
{ _id : new ObjectId('수정할 document _id') },
{ $set: { like : 1 } }
)
db.collection('컬렉션명').updateOne(
{ _id : new ObjectId('수정할 document _id') },
{ $inc: { like : 1 } }
)
✔️ $mul 쓰면 기존값에 곱셈을 시켜준다.
✔️$unset 쓰면 기존에 있던 필드를 삭제해준다. like 항목 자체를 아예 제거해버린다.
✔️아예 삭제보다는 그냥 빈 문자열이나 0을 집어넣거나 하는 경우가 더 편할 수도 있다.
db.collection('컬렉션명').updateMany(
{ title : '오늘 저녁은 닭가슴살' },
{ $set: { title : '아니고 치킨임' } }
)
title이 '오늘 저녁은 닭가슴살'로 되어있는 모든 document를 찾아서
title 항목을 '아니고 치킨임'로 덮어쓰기를 해준다.
db.collection('컬렉션명').updateMany(
{ like : { $gt: 5 } },
{ $set: { like : 100 } }
)
-gt는 greater than이라는 뜻이라 5이상 등 값 범위를 지정하고 싶을때는
저런식으로 사용한다.
✔️ $gt(greater than) :'초과'
✔️ $gte(greater than eqal):'이상'
✔️ $lt(lesser than):'미만'
✔️$lte : '이하'
✔️$ne : not equal
예를 들어 like가 10이 아닌 것만 필터링해서 수정할 수도 있다.
✨ 1. DB에있던 document 하나 수정하려면 db.collection().updateOne()
✨ 2. 수정할 때 $set연산자 쓰면 덮어쓰기, $inc는 기존에 있던 숫자를 원하는 만큼 증감 가능
✨ 3. 여러개 document 한 번에 수정하려면 updateMany 쓰면 되는데 거기서는 $gt같은걸로 특정조건을 만족하는 document만 필터링해서 수정해버릴 수도 있음
✨ 4. 서버에서 어떤 정보가 필요한데 근데 서버에서 찾을 수 없으면
유저에게 보내라고하거나 DB에서 출력해보자.
✨ 5. method override 사용하면 폼태그에서도 put, delete 요청 가능.