[Mongoose REST API] PUT, PATCH : 업데이트 & {overwrite: true}란?
2020. 5. 15. 16:26ㆍ컴퓨터언어/Database
728x90
반응형
PUT | PATCH | |
용도 | 선택된 항목(URL)에 해당하는 {} 객체를 통째로 업데이트하기 | 선택된 항목(URL)에 해당하는 {} 객체 내 특정 필드를 업데이트하기 |
방법 |
|
|
주의 |
PUT에서는 overwrite 인자를 사용해야 한다. |
PATCH에서는 set 인자를 사용해야 한다. |
PATCH는 원래 존재목적 자체가 원하는 특정 필드만을 골라서 업데이트하기 때문에, {$set: {}} 인자가 필요한 것이 이해가 된다.
그런데 PUT에서 {overwrite: true} 인자는 왜 필요할까?
이 인자가 없는 상태에서 클라이언트가 PUT 요청을 한다고 가정해보자.
이때 클라이언트가 업데이트 하면서 실수 또는 고의로 원래 존재했던 필드들을 개수 맞춰 그대로 입력하지 않게 된다면,
입력하지 않은 필드들은 null 값을 가지게 된다.
하지만 Mongoose가 제공하는 {overwrite: true} 인자를 사용하게 되면,
클라이언트가 null을 원할리가 없다고 여겨, 해당 필드를 null로 저장해주는 대신에 그 필드 자체를 지워준다.
이는 참 좋은 시스템이지만, 레코드 간 통일성이 없게 되고 안정적이지 못하다고 볼 수 있다.
그래서 PATCH를 사용하는 것이 자료관리에 더 유연하고 안정적이라고 볼 수 있다.
728x90
반응형
'컴퓨터언어 > Database' 카테고리의 다른 글
[Mongoose Encryption] DB를 활용한 유저인증 방식 (0) | 2020.05.16 |
---|---|
[Mongoose REST API] PATCH와 body-parser, 그리고 HTML의 name과 value (0) | 2020.05.15 |
[REST API] 뿌시기 by Node.js & Mongoose (0) | 2020.05.14 |
[Mongoose] db.~.find() VS db.~.findOne() (0) | 2020.05.13 |
[Mongoose] Cannot set headers after they are sent to the client (0) | 2020.05.13 |