728x90
λ°μν
π‘ μ€μ΅ ν¬μΈνΈ!
π λΈλΌμ°μ
π MongoDB
- AJAX λ‘ μμ μμ²μ νμ λ, μ±κ³΅νλ©΄ DB μμ λ°μ΄ν°κ° μμ λ λΏλ§ μλλΌ νλ©΄μμμλ 보μ΄μ§ μκ² μ²λ¦¬νλ€.
π λ€μ΄κ°κΈ° μ μ
- μμ²μλ GET, POST, PUT, DELETE μ΄λ κ² 4κ°μ§κ° μλ€.
- νμ§λ§ HTML νΌμμλ μΌλ°μ μΌλ‘ PUT, DELETE μμ²μ λΆκ°νλ―λ‘ λ€λ₯Έ λ°©λ²μ μ¬μ©ν΄μΌ νλ€.
- method-override λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ€.
- AJAX λ‘ DELETE μμ²μ νλ€.
- POST μμ²μΌλ‘ DELETE μμ
μ μννλ€.
(κ°μ₯ νΈν λ°©λ²μ΄μ§λ§ REST ν API λ₯Ό λ§λ€κΈ° μν΄ μ§μνλ€.)
π AJAX κ°λ λ° μ¬μ©
- AJAX λ νλ‘ νΈμλμμ JavaScript λ₯Ό μ΄μ©ν΄ μλ²μ λ€μν μμ²μ ν μ μλ λ¬Έλ²κ°μ κ²μΌλ‘ μλ‘κ³ μΉ¨μ νμ§ μκ³ λ μλ²μ μμ²μ΄ κ°λ₯νλ€λ μ₯μ μ΄ μλ€.
- JavaScript λ§μΌλ‘λ AJAX κ° κ°λ₯νμ§λ§ μ½λκ° κΈΈμ΄μ§λ―λ‘ jQuery λ₯Ό μ€μΉλ₯Ό κΆμ₯νλ€.
π€ HTML
<ul class="list-group">
<% for(let i = 0; i < posts.length; i++){ %>
<li class="list-group-item mb-2" style="border-top-width: 1px">
<p class="mb-2">ν μΌ : <%= posts[i].ν μΌ %></p>
<p class="mb-2">λ§κ°μΌ : <%= posts[i].λ§κ°μΌ %></p>
<button class="btn btn-danger delete" data-id="<%= posts[i]._id %>">μμ </button>
</li>
<% } %>
</ul>
- μ°μ 리μ€νΈνμ΄μ§μ μμ λ²νΌμ νλ μΆκ°ν΄μ€λ€.
- λμ€μ μ΄ λ²νΌμ ν΄λ¦νμ λ μμ λ²νΌμ΄ λ€μ΄μλ λ°μ΄ν° νλλ₯Ό 리μ€νΈνμ΄μ§μ DB μμ μμ ν΄μΌ νλ€.
- λ°λΌμ button νκ·Έμ data-id λΌλ μμ±μ μΆκ°νμ¬ νμ¬μ κ²μλ¬Όμ΄ μ΄λ€ _id μ ν΄λΉνλμ§ κ΅¬λ³ν μ μλλ‘ ν΄μ£Όμλ€.
- κ·Έλ¦¬κ³ _id κ°μ DB μ μ μ₯λ λ°μ΄ν°λ₯Ό κ°μ Έμ€λ κ²μ΄λ―λ‘ EJS λ¬Έλ²μ μ¬μ©νλ€.
π€ HTML νμΌ λ΄ JavaScript
// jQuery CDN μμ 볡μ¬ν΄μ¨ μ½λ
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
// DELETE μμ²
<script>
// class κ° delete μΈ λ²νΌμ ν΄λ¦νλ©΄
$('.delete').click(function(e){
let postNum = e.target.dataset.id;
let clicked = $(this);
// DELETE μμ²μ νλ€.
$.ajax({
method : 'DELETE',
url : '/delete',
data : {_id : postNum}
}).done(function(result){
// AJAX μ±κ³΅ν κ²½μ° μ€νν μ½λ
console.log('μ±κ³΅νμ΅λλ€.');
clicked.parent('li').fadeOut();
}).fail(function(err){
// AJAX μ€ν¨ν κ²½μ° μ€νν μ½λ
console.log('μ€ν¨νμ΅λλ€.');
})
})
</script>
- DELETE μμ²μ μμ λ²νΌμ ν΄λ¦νμ λμλ§ λ°μν΄μΌ νκ³ , μ½λκ° κΈΈμ΄μ§μ λ°©μ§νκΈ° μν΄ jQuery λ¬Έλ²μ μ΄μ©ν΄μ μμ κ°μ΄ μμ±νλ€.
- data λΆλΆμλ μμ νλ €λ κ²μλ¬Όμ΄ μ΄λ€ κ²μλ¬ΌμΈμ§ μ λ³΄κ° νμνλ€. DB μ μ μ₯λ κ²μλ¬Ό λ°μ΄ν°μμλ _id κ° μ μΌν κ°μ΄λ―λ‘ μ΄ κ°μ data λ‘ λ겨주면 λλ€.
- κ²μλ¬Όμ _id λ HTML μμ data-id μμ λ°μμ¬ μ μλλ°, .dataset.id λ₯Ό ν΅ν΄ μ 보λ₯Ό λ°μμ€λ©΄ λλ€.
- κ·Έλμ ν΄λ¦ν μμλ₯Ό e.target μΌλ‘ λ°μμ e.target.dataset.id λΌκ³ μ½λλ₯Ό μμ±νλ©΄ κ·Έ μ½λκ° ν΄λ¦ν κ²μλ¬Όμ id κ° λλ κ²μ΄λ€.
(μ°Έκ³ λ‘ λλ μ΄ λΆλΆμ postNum μ΄λΌκ³ λ³μμ λ΄μμ£Όμλ€.) - .done() ν¨μ λ΄μ λ³λ€λ₯Έ μ½λλ₯Ό μμ±νμ§ μμΌλ©΄, μμ λ²νΌμ λλ μ λ AJAX μμ²μ΄ μ±κ³΅νμμλ λΈλΌμ°μ μ νλ©΄μ λ³νκ° μκ³ DB λ°μ΄ν°λ§ μμ λλ€. (AJAX κ° μλ‘κ³ μΉ¨ μμ΄ μμ²μ μ²λ¦¬νλ€λ νΉμ±μ΄ μμΌλ―λ‘!)
- λ°λΌμ, μ¬μ©μλ μλ‘κ³ μΉ¨μ νμ§ μκ³ μλ μμ κ° μ λλ‘ λμλμ§ νμΈν μκ° μλλ° μ΄λ₯Ό μκ°μ μΌλ‘ 보μ¬μ£ΌκΈ° μν΄ AJAX κ° μ±κ³΅ν κ²½μ° fadeOut() μ μ¬μ©νμ¬ μ 보μ΄κ²λ μ²λ¦¬ν΄μ£Όμλ€.
- $(this) λ νμ¬ ν΄λ¦μ΄λ²€νΈκ° λμνλ μμλ₯Ό μλ―Ένλ©° $(e.target) μΌλ‘λ λ체 κ°λ₯νλ€.
- $() λ‘ κ°μΈλ μ΄μ λ jQuery λ¬Έλ²μ μ¬μ©νκΈ° μν κ²μ΄λ©° JavaScript λ¬Έλ²μΌλ‘ μ¬μ©ν κ±°λΌλ©΄ κ΅³μ΄ μ΄λ κ² μμ±ν νμκ° μλ€.
- $(this) λ₯Ό μ’ λ λͺ ννκ² μλ―Έλ₯Ό 보μ¬μ£ΌκΈ° μν΄ clicked λΌλ λ³μμ λ΄μλ€.
- button νκ·Έκ° λ΄κ²¨μλ li νκ·Έ μ 체λ₯Ό μμ μΌ νλ―λ‘ clicked.parent('li').fadeOut(); μ΄λΌ μ½λλ₯Ό μμ±νλ€.
π€ JavaScript
// * delete
// λκ΅°κ°κ° μμ λ²νΌμ ν΄λ¦νμ¬ /delete λ‘ DELETE μμ²μ νλ©΄
app.delete('/delete', function(req, res){
// DB μμ κ²μκΈ μμ νκΈ°
req.body._id = parseInt(req.body._id);
db.collection('post').deleteOne(req.body, function(err, result){
console.log('κ²μλ¬Ό μμ μλ£');
res.status(200).send({message : 'μ±κ³΅νμ΅λλ€.'});
})
})
- AJAX μμ² μμ data μ λ΄κΈ΄ μ 보λ req.body μ λ΄κ²¨μ μ λ¬λλ€.
- deleteOne() ν¨μλ μμ νλ €λ λ°μ΄ν°μ μ½λ°±ν¨μλ₯Ό νλΌλ―Έν°λ‘ κ°μ§λ€.
- λ°λΌμ, db.collection('post').deleteOne(req.body, function( ){ }) κ³Ό κ°μ΄ μμ±νκ² λλ©΄ db.collection μ post μ μλ λ°μ΄ν° μ€ req.body μ ν΄λΉνλ λ°μ΄ν°λ₯Ό μμ ν΄λ¬λΌλ μλ―Έκ° λλ€.
- μ¬κΈ°μ ν¬μΈνΈλ, req.body μ λ΄κ²¨μ¨ μ 보λ λ°μ΄ν° νμ
μ΄ λ¬Έμλ‘ λ°λλ κ²½μ°κ° λ°μνκΈ° λλ¬Έμ νμνλ€λ©΄ μ«μλ‘ λ³ννλ κ³Όμ μ΄ νμνλ€.
κ·Έλμ req.body._id = parseInt(req.body._id) λΌλ μ½λλ₯Ό ν΅ν΄ μ«μλ‘ λ³νν΄μ£Όμλ€.
728x90
λ°μν
'[κ°λ°] Practice > Node.js MongoDB' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Node.js / MongoDB] κΈ μμ κΈ°λ₯ λ§λ€κΈ° (0) | 2022.03.12 |
---|---|
[Node.js / MongoDB] μμΈ νμ΄μ§ λ§λ€κΈ° (0) | 2022.03.12 |
[Node.js / MongoDB] κ²μλ¬Όλ§λ€ λ²νΈ λ¬κΈ° (0) | 2022.03.11 |
[Node.js / MongoDB] HTML μ DB λ°μ΄ν° λ£μ΄λ³΄κΈ° (0) | 2022.03.11 |
[Node.js / MongoDB] Database μ μλ£ μ μ₯νλ λ² (0) | 2022.03.11 |