2020. 5. 15. 17:15ㆍ컴퓨터언어/Database
PATCH는 클라이언트가 업데이트 하고자 하는 필드만을 공략해주는 메서드다.
이때 클라이언트가 "글의 내용을 'Hello'로 업데이트해주세요"에 해당하는 것이 app.patch() 메서드 내의 {$set: {title: "Hello"}} 인자이다.
https://mongoosejs.com/docs/api/model.html#model_Model.update
물론 위에서 예를 들기 위해 하드코딩한 "Hello"는 실전에서는 클라이언트가 실제로 HTML 폼에 입력한 값을 그때그때 유동적으로 받아와야 한다.
왜냐하면 저 상태라면 해당 레코드의 title 필드를 항상 "Hello"로만 바꾸기 때문이다.
이때 필요한 것이 body-parser이다.
HTML <form>에서 클라이언트의 입력 데이터가 서버로 전송되면, 해당 Route가 처리될 때 호출되는 콜백함수에서 이용되는 request(req) 인자가 그 입력 데이터를 가지고 있는다.
여기서 body-parser는 req 인자에 .body로 접근하여 입력 데이터를 가지고 놀 수 있게 되는 것이다.
그리고 req.body를 하게되면,
해당 결과는 HTML 내에 존재하는 모든 name="" 속성을 가지고 있는 <> 태그들의 value="" 값을 {} 객체에 담아 저장하게 된다.
이때 name이 {}의 key, 그리고 value가 {}의 value로 들어간다.
따라서 위에서의 {$set: {title: "Hello"}}는 {$set: req.body}로 수정해야 한다.
PATCH의 매력이 바로 여기서 드러난다!
req.body에는 HTML 내의 여러 name-value(key-value) 쌍들이 들어있는데, PATCH는 그중에서 클라이언트가 수정하고자 입력한 부분만 인식하여 그 부분만 싹 바꿔준다.
5월 8일을 5월 15일로 바꿔보는 예제▼
'컴퓨터언어 > Database' 카테고리의 다른 글
[bcrypt] Hashing의 보안을 더 높인 Salting Round (0) | 2020.05.17 |
---|---|
[Mongoose Encryption] DB를 활용한 유저인증 방식 (0) | 2020.05.16 |
[Mongoose REST API] PUT, PATCH : 업데이트 & {overwrite: true}란? (0) | 2020.05.15 |
[REST API] 뿌시기 by Node.js & Mongoose (0) | 2020.05.14 |
[Mongoose] db.~.find() VS db.~.findOne() (0) | 2020.05.13 |