λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
[개발] Practice/Node.js MongoDB

[Node.js / MongoDB] POST μš”μ²­ν•΄λ³΄κΈ°

by Connecting-the-dots 2022. 3. 11.
728x90
λ°˜μ‘ν˜•

πŸ’‘ μ‹€μŠ΅ 포인트!

  • μ΄λ²ˆμ—λŠ” κΈ€μ“°κΈ° νŽ˜μ΄μ§€μ—μ„œ 폼 λ‚΄μš©μ„ μž‘μ„±ν•œ ν›„, POST μš”μ²­μ„ ν•΄λ³΄μ•˜λ‹€.
  • POST μš”μ²­μ„ ν–ˆμ„ λ•Œ, λ‚΄κ°€ μž‘μ„±ν•œ λ‚΄μš©λ“€μ΄ μ œλŒ€λ‘œ 전솑이 λ˜λŠ” 것이 λͺ©ν‘œ! 

πŸ’œ form νƒœκ·Έ μ…‹νŒ…ν•˜κΈ°

<form action="/add" method="POST">
    <div class="form-group my-4">
      <label class="mb-2">였늘의 할일</label>
      <input type="text" class="form-control" name="content">
    </div>
    <div class="form-group my-4">
      <label class="mb-2">λ‚ μ§œ</label>
      <input type="text" class="form-control" name="date">
    </div>
    <button type="submit" class="btn btn-danger fw-bold">Submit</button>
</form>
  • form νƒœκ·Έμ— action κ³Ό method 속성을 λ„£μ–΄, Submit λ²„νŠΌμ„ λˆ„λ₯Ό λ•Œ /add λΌλŠ” κ²½λ‘œμ— POST μš”μ²­μ„ ν•˜λ„λ‘ μ„€μ •ν•΄μ£Όμ—ˆλ‹€.
  • action 은 μ–΄λ–€ 경둜둜 μš”μ²­μ„ ν•  것인지, method λŠ” μ–΄λ–€ μš”μ²­μ„ ν•  것인지λ₯Ό μ •ν•΄μ£ΌλŠ” 뢀뢄에 ν•΄λ‹Ήν•œλ‹€.
  • λ˜ν•œ, input 이 μ—¬λŸ¬ κ°œμ΄λ―€λ‘œ name μ΄λΌλŠ” 속성을 λ„£μ–΄, μ„œλ²„κ°€ μ–΄λŠ input 의 데이터인지 ꡬ별을 ν•  수 μžˆκ²Œλ” ν•΄μ£Όμ—ˆλ‹€.

πŸ’œ body-parser μ„€μΉ˜ν•˜κΈ°

  • 2021λ…„ 이전에 μ„€μΉ˜ν•œ ν”„λ‘œμ νŠΈλ“€μ€ body-parser λΌλŠ” λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μžˆμ–΄μ•Ό 데이터 μ²˜λ¦¬κ°€ μš©μ΄ν•˜λ‹€.
  • 터미널에 npm install body-parser λ₯Ό μž…λ ₯ν•˜λ©΄ body-parser λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ„€μΉ˜λœλ‹€.
  • μ„€μΉ˜κ°€ μ™„λ£Œλ˜λ©΄ JavaScript νŒŒμΌμ— μ•„λž˜μ˜ μ½”λ“œλ₯Ό μΆ”κ°€ν•΄μ£Όλ©΄ body-parser μ„€μΉ˜κ°€ μ™„λ£Œλœλ‹€.
const bodyParser= require('body-parser')
app.use(bodyParser.urlencoded({extended: true}))
  • 2021λ…„ 이후에 μ„€μΉ˜ν•œ ν”„λ‘œμ νŠΈλ“€μ€ body-parser λΌμ΄λΈŒλŸ¬λ¦¬κ°€ express 에 기본으둜 ν¬ν•¨λ˜μ–΄ μžˆμœΌλ―€λ‘œ npm 으둜 λ”°λ‘œ μ„€μΉ˜ν•  ν•„μš”κ°€ μ—†λ‹€.
  • λŒ€μ‹  μ•„λž˜μ˜ μ½”λ“œλ₯Ό JavaScript νŒŒμΌμ— μΆ”κ°€ν•˜λ©΄ λœλ‹€.
app.use(express.urlencoded({extended: true}))

πŸ’œ POST μš”μ²­ μ²˜λ¦¬ν•˜λŠ” μ½”λ“œ 짜기

// λˆ„κ΅°κ°€κ°€ κΈ€μ“°κΈ° νŽ˜μ΄μ§€μ—μ„œ 폼을 μž‘μ„±ν•œ ν›„, Submit λ²„νŠΌμ„ 눌러 /add 경둜둜 POST μš”μ²­μ„ ν•˜λ©΄
app.post('/add', function(req, res){
	// '전솑 μ™„λ£Œ' λΌλŠ” 문ꡬλ₯Ό λ„μš΄λ‹€.
    console.log(req.body); // 폼에 μž‘μ„±ν•œ 데이터가 μ œλŒ€λ‘œ μ „μ†‘λ˜λŠ”μ§€ 확인
    res.send('전솑 μ™„λ£Œ')
  });
  • 폼에 μž‘μ„±ν•œ 데이터가 μ œλŒ€λ‘œ μ „μ†‘λ˜λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ console.log(req.body) 둜 ν™•μΈν•΄λ³΄μ•˜λ‹€.

  • μœ„μ™€ 같이 ν„°λ―Έλ„μ—μ„œ μ „μ†‘ν•œ λ‚΄μš©μ΄ 객체의 ν˜•νƒœλ‘œ μ œλŒ€λ‘œ λ‚˜μ˜€λŠ” 것을 확인할 수 μžˆλ‹€.
728x90
λ°˜μ‘ν˜•