๋ชฉ์ฐจ
form ํ๊ทธ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด GET, POST ์์ฒญ๋ง ๊ฐ๋ฅํ๋ค.
ํ์ง๋ง PUT, DELETE ๋ฑ์ ํ์ฉํ๋ฉด ๋ ์ข์ API์ ๊ธฐ์ค์ ๋ถํฉํ ์ ์์ ๊ฒ์ด๋ค.
์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด์!
1. method-override
method-override ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ๋ฉด ๊ฐ๋ฅํ๋ค.
์ค์น
npm install method-override
import
//server.js
const methodOverride = require('method-override')
app.use(methodOverride('_method'))
์๋ฒํ์ผ ์ต์๋จ์ ์ ์ฝ๋๋ฅผ ์์ฑํด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก๋ถํฐ ํ์ํ ๊ฒ๋ค์ ๊ฐ์ ธ์จ๋ค.
1) form ํ๊ทธ ์์
//edit.ejs
...
<form action="/editpost/<%=result._id%>?_method=PUT" method="POST">
<textarea name="title"><%=result.title%></textarea>
<textarea name="content"><%=result.content%></textarea>
</form>
?_method=PUT ์ action์์ฑ ๋ง์ง๋ง์ ์ฝ์ ํด์ฃผ๋ฉด
method ์์ฑ์ด PUT์ผ๋ก ๋ณํ๋์ด ์ ์ก์ด ๋๋ค.
2) ์๋ฒํ์ผ ์์
app.put('/editpost/:num', async(request, response)=>{
...
})
์๋ฒํ์ผ๋ put์ผ๋ก ๋ณ๊ฒฝํด์ฃผ๋ฉด ๋!
2. MongoDB ์์ ๋ฌธ๋ฒ +
1) ํ๋ ์์ ์ฐ์ฐ์
์ด์ ์ ์์ ํ๊ธฐ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ updateOne() ํจ์์ $set ์ฐ์ฐ์๋ฅผ ์ด์ฉํ์๋ค.
์ด๊ฒ์ MongoDB์ ์ฌ๋ฌ ์ฐ์ฐ์ ์ค ํ๋ ์์ ์ฐ์ฐ์์ ์ผ๋ถ์ด๋ค.
$set์ ๋ฎ์ด์ฐ๊ธฐ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋๋ฐ ์ด์ธ์๋ ๋ค์ํ ํ๋์์ ์ฐ์ฐ์๋ค์ด ์กด์ฌํ๋ค.
- $inc : ํ๋ ๊ฐ ์ฆ๊ฐ ๊ธฐ๋ฅ (์์: + , ์์:-)
{$inc : {ํ๋๋ช
: ์ซ์}}
์ ๋ฌํ ํ๋์ ๊ฐ์ ์ซ์๋งํผ ๊ฐ๊ฐํ๋ ์ฐ์ฐ์์ด๋ค.
- $mul : ํ๋ ๊ฐ ๊ณฑํ๊ธฐ ๊ธฐ๋ฅ
{$mul : {ํ๋๋ช
: ์ซ์}}
์ ๋ฌํ ํ๋์ ๊ฐ์ ์ซ์๋งํผ ๊ณฑํ๋ ์ฐ์ฐ์์ด๋ค.
- $unset : ํ๋ ์ญ์ ๊ธฐ๋ฅ
{$unset : {ํ๋๋ช
1 : '', ํ๋๋ช
2 : ''}}
์ ๋ฌํ ํ๋๋ฅผ ์ญ์ ํ๋ ์ฐ์ฐ์์ด๋ค.
ํ์ง๋ง ์ด ๋ฐฉ๋ฒ๋ณด๋ค 0์ ์ง์ด ๋ฃ๊ฑฐ๋ ๋น ๋ฌธ์์ด๋ก ๋์ฒดํ๋ ๊ฒ์ด ๋ ๋ค๋ฃจ๊ธฐ ํธํ ๊ฒฝ์ฐ๊ฐ ๋ง์!
2) ๋น๊ต ์ฐ์ฐ์
๋น๊ต ์ฐ์ฐ์๋ ์กด์ฌํ๋ค!
- $gt : ๋ ํฐ ํ๋๊ฐ์ ๊ฐ์ง document ํํฐ๋ง (>)
{ํ๋๋ช
: {$gt : ๊ฐ}}
ํด๋น ํ๋๋ช ์ ๊ฐ์ด ์ ๋ฌํ ๊ฐ๋ณด๋ค ๋ ํฐ document๋ฅผ ๋ฐํํ๋ ํจ์์ด๋ค.
- $gte: ์ด์์ธ ํ๋๊ฐ์ ๊ฐ์ง document ํํฐ๋ง (≥)
{ํ๋๋ช
: {$gte : ๊ฐ}}
ํด๋น ํ๋๋ช ์ ๊ฐ์ด ์ ๋ฌํ ๊ฐ ์ด์์ธ document๋ฅผ ๋ฐํํ๋ ํจ์์ด๋ค.
- $lt : ๋ ์์ ํ๋๊ฐ์ ๊ฐ์ง document ํํฐ๋ง (<)
{ํ๋๋ช
: {$lt : ๊ฐ}}
ํด๋น ํ๋๋ช ์ ๊ฐ์ด ์ ๋ฌํ ๊ฐ๋ณด๋ค ๋ ์์ document๋ฅผ ๋ฐํํ๋ ํจ์์ด๋ค.
- $lte: ์ดํ์ธ ํ๋๊ฐ์ ๊ฐ์ง document ํํฐ๋ง (≤)
{ํ๋๋ช
: {$lte : ๊ฐ}}
ํด๋น ํ๋๋ช ์ ๊ฐ์ด ์ ๋ฌํ ๊ฐ ์ดํ์ธ document๋ฅผ ๋ฐํํ๋ ํจ์์ด๋ค.
- $ne: ๊ฐ์ด ๊ฐ์ง ์์ ํ๋๊ฐ์ ๊ฐ์ง document ํํฐ๋ง (≠)
{ํ๋๋ช
: {$ne : ๊ฐ}}
ํด๋น ํ๋๋ช ์ ๊ฐ์ด ์ ๋ฌํ ๊ฐ๊ณผ ๋ค๋ฅธ document๋ฅผ ๋ฐํํ๋ ํจ์์ด๋ค.
์ด ์ธ์ ๋ ๋ง์ ์ฐ์ฐ์๋ค์ด ์กด์ฌํ๋ค!
(์ฐธ๊ณ ์ ๋ก์ด๋โจ: https://www.zerocho.com/category/MongoDB)
3) ๋์์ ์ฌ๋ฌ document(๋ฐ์ดํฐ) ์์ ํ๊ธฐ
updateOne()์ ํ๊ฐ์ document ๋ง ์์ ์ด ๊ฐ๋ฅํ๋ค.
์ฌ๋ฌ๊ฐ์ ์์ ์ ์ํ ๋์๋ updateMany()๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
- updateMany()
์ฌ์ฉ๋ฒ
updateMany({๋ฐ์ดํฐ ์ ๋ณด}, {์์ ์ฌํญ}})
์ฌ์ฉ๋ฒ์ updateOne๊ณผ ์ ์ฌํ๋ค.
์ ๋ฌํ ๋ฐ์ดํฐ ์ ๋ณด๋ฅผ ๊ฐ์ง ๋ชจ๋ document๋ฅผ ๋๋ฒ์งธ ์ธ์์ ๋ํ ๋ด์ฉ์ผ๋ก ์์ ํ๋ค.
์ด๋ ๋ฐ์ดํฐ ์ ๋ณด์๋ ์์์ ๋ค๋ฃจ์๋ ๋น๊ต ์ฐ์ฐ์ ๋ฑ์ ํ์ฉํ์ฌ ํํฐ๋ง์ด ๊ฐ๋ฅํ๋ค.
'๐ | WEB DEV > NodeJS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[NodeJS+Express] 12. ๊ธ ์์ ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ (0) | 2023.10.15 |
---|---|
[NodeJS+Express] 11. URLํ๋ผ๋ฏธํฐ (์์ธํ์ด์ง ๋ง๋ค๊ธฐ) (0) | 2023.10.15 |
[NodeJS+Express] 10. ๊ธ ์์ฑ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ (MongoDB ๋ฐ์ดํฐ ์ฝ์ ) (1) | 2023.10.14 |
[NodeJS+Express] 9. RESTful API๋? (1) | 2023.10.11 |
[NodeJS+Express] 8. EJS ๋ฌธ๋ฒ ์ ๋ฆฌ (0) | 2023.10.09 |
๋๊ธ