728x90
λ°μν
π‘ μ€μ΅ ν¬μΈνΈ!
π κ²μλ¬Όλ§λ€ _id λ¬μμ μ μ₯νκΈ°
- MongoDB μ λ°μ΄ν°λ₯Ό μ μ₯ν λ κ°μ λ‘ μμ΄λλ₯Ό κ°μ λ‘ λΆμ¬ν΄μ£ΌκΈ΄ νμ§λ§, μ§μ _id λ₯Ό λ£μ΄μ£Όλ κ² μΆνμ μμ λ° μμ κ° μ©μ΄νλ€.
- _id λ μλμ μ½λμ κ°μ΄ /add κ²½λ‘λ‘ POST ν λ λ°μ΄ν°μ λ£μ΄μ£Όλ©΄ λλ€.
(λ¬Όλ‘ μλμ μ½λλ μμλΌμ _id : 1 μ΄λΌκ³ νλμ½λ©νμ λΏ μ€μ λ‘λ νλμ½λ©νλ©΄ μλλ€.)
app.post('/add', function(req, res){
μλ΅.send('μ μ‘ μλ£');
db.collection('post').insertOne( { _id : 1, ν μΌ : req.body.content, λ§κ°μΌ : req.body.date } , function(){
console.log('λ°μ΄ν° μ μ₯ μλ£')
});
});
- λ€λ₯Έ DB μμλ _id λ₯Ό μλμΌλ‘ μ¦κ°μμΌμ μΆκ°ν΄μ£Όλ Auto Increment λΌλ κΈ°λ₯μ΄ μμ§λ§ MongoDB μλ κ·Έμ κ°μ κΈ°λ₯μ΄ μμΌλ―λ‘ μ§μ λͺλ² κ²μλ¬Όμ λ°ννλμ§ κΈ°λ‘ν΄λμ΄μΌ νλ€.
- 보νΈμ μΈ λ°©λ²μΌλ‘ λ°νλ λλ§λ€ 'νμ¬κΉμ§ λ°νλ κ²μλ¬Ό κ°μ + 1' μ ν΄μ£Όλ λ°©λ²μ΄ μλ€.
π νμ¬κΉμ§ λ°νλ κ²μλ¬Ό κ°μ κΈ°λ‘νκΈ°
- 'νμ¬κΉμ§ λ°νλ κ²μλ¬Ό κ°μ + 1' μ νκΈ° μν΄μλ νμ¬κΉμ§ λ°νλ κ²μλ¬Ό κ°μλ₯Ό μμμΌ νλ€.
- νμ¬κΉμ§ λ°νλ κ²μλ¬Ό κ°μλ₯Ό κΈ°λ‘νκΈ° μν΄ MongoDB μμ counter λΌλ collection μ νλ λ λ§λ€μ΄μ£Όμλ€.
- counter collection μ μμ±νμΌλ©΄, INSERT DOCUMENT λ²νΌμ ν΄λ¦νκ³ μλμ κ°μ΄ λ΄μ©μ μμ±ν΄μ€λ€.
- totalPosts νλͺ©μ μ«μκ° λ€μ΄κ°μΌνλ―λ‘ νμ μ Int32λ‘, μ΄κΈ°κ°μ 0μΌλ‘ μ ν ν΄μ£Όμλ€.
- μμΌλ‘λ μλ‘μ΄ κ²μλ¬Όμ΄ λ°νλλ©΄ totalPosts μ λͺλ²μ§Έ κ²μλ¬Όμ΄ λ°νλμλμ§ κΈ°λ‘ λ° μ μ₯λλ€.
π POST μμ² μ½λ μμ νκΈ°
// λκ΅°κ°κ° νΌμμ /add λ‘ POST μμ²μ νλ©΄
app.post('/add', function(req, res){
res.send('μ μ‘μλ£');
// κ²μλ¬Όλ§λ€ λ²νΈλ₯Ό λ¬μ μ μ₯νκΈ°
// DB.counter λ΄μμ 'μ΄κ²μλ¬Όκ°μ'λ₯Ό μ°Ύμμ
db.collection('counter').findOne({name : 'μ΄κ²μλ¬Όκ°μ'}, function(err, result){
// console.log(result.totalPosts);
// 'μ΄κ²μλ¬Όκ°μ' μ totalPosts κ°μ totalPosts λ³μμ μ μ₯
var totalPosts = result.totalPosts;
// μ΄μ DB.post μ λ²νΈλ₯Ό λ¨ μλ‘μ΄ κ²μλ¬Όμ μΆκ°
db.collection('post').insertOne({_id : totalPosts + 1, ν μΌ: req.body.content, λ§κ°μΌ : req.body.date}, function(err, result){
console.log('λ°μ΄ν° μ μ₯ μλ£!');
// DB.counter μ 'μ΄κ²μλ¬Όκ°μ' μ totalPosts κ°μ 1μ© μ¦κ°
db.collection('counter').updateOne({name : 'μ΄κ²μλ¬Όκ°μ'},{ $inc : {totalPosts: 1} }, function(err, result){
console.log('λ°μ΄ν° μ
λ°μ΄νΈ μλ£!');
});
});
});
})
- λ°μ΄ν°λ₯Ό μμ νκ³ μΆμ λμλ updateOne() ν¨μλ₯Ό μ¬μ©νλ©΄ λλλ°, μ΄ ν¨μμ κ²½μ° 3κ°μ νλΌλ―Έν°λ₯Ό νμλ‘ νλ€.
- μ’μΈ‘ : {name : 'μ΄κ²μλ¬Όκ°μ'} μ κ°μ μλ£μ μ΄λ¦ νΉμ 쿼리문μ μμ±
- μ€μ : operator λ¬Έλ² λ° μ μ©λ μλ£ μμ±
$set μ μλ£μ κ°μ κΈ°μ¬λ μ«μλ‘ λ³κ²½, $inc λ κΈ°μ¬λ μ«μλ§νΌ μλ£μ κ°μ μ¦κ°μν¨λ€λ μλ―Έ! - μ°μΈ‘ : μ½λ°±ν¨μ
- λ°λΌμ, λ°μ΄ν°λ₯Ό 1μ© μ¦κ°μν€λ κ²μ΄ λͺ©μ μ΄λ―λ‘ { $inc : {totalPosts : 1} } λ‘ μ½λλ₯Ό μμ±ν΄μ£Όμλ€.
π DB μμ κ²μλ¬Ό _id λΆμ¬ μ¬λΆ νμΈνκΈ°
π€ counter
π€ post
728x90
λ°μν
'[κ°λ°] Practice > Node.js MongoDB' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Node.js / MongoDB] μμΈ νμ΄μ§ λ§λ€κΈ° (0) | 2022.03.12 |
---|---|
[Node.js / MongoDB] AJAX λ‘ μμ μμ²νκΈ° (0) | 2022.03.12 |
[Node.js / MongoDB] HTML μ DB λ°μ΄ν° λ£μ΄λ³΄κΈ° (0) | 2022.03.11 |
[Node.js / MongoDB] Database μ μλ£ μ μ₯νλ λ² (0) | 2022.03.11 |
[Node.js / MongoDB] MongoDB μ ν νκΈ° (0) | 2022.03.11 |