๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒŒ | WEB DEV/NodeJS

[NodeJS+Express] 13. formํƒœ๊ทธ์—์„œ PUT, DELETE ์š”์ฒญํ•˜๊ธฐ & MongoDB ์ˆ˜์ •๋ฌธ๋ฒ• +

by KASSID 2023. 10. 15.

๋ชฉ์ฐจ

    728x90

    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๋ฅผ ๋‘๋ฒˆ์งธ ์ธ์ž์— ๋Œ€ํ•œ ๋‚ด์šฉ์œผ๋กœ ์ˆ˜์ •ํ•œ๋‹ค.

     

    ์ด๋•Œ ๋ฐ์ดํ„ฐ ์ •๋ณด์—๋Š” ์œ„์—์„œ ๋‹ค๋ฃจ์—ˆ๋˜ ๋น„๊ต ์—ฐ์‚ฐ์ž ๋“ฑ์„ ํ™œ์šฉํ•˜์—ฌ ํ•„ํ„ฐ๋ง์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

     

     

    ๋Œ“๊ธ€