[Mongoose] Data Validation | 제약 걸기
데이터 입력해 들어올 때 validation 를 만들어 놓으면 참 편해진다.
Validation이란?
nosql은 일정한 규격없이 데이터 베이스에
모든 데이터를 다 입력 받을 수 있는데,
이게 나중에 엄청 관리하기가 힘들어진다.
그래서 validation을 이용해 데이터를 가려받을 수 있게 한다.
미리 입력받을 데이터에 프리셋을 주는 것이다.
예를 들어
나이를 입력받는데 Number로만 validation 해놓으면
10,000으로 입력해도 저장이되어버리니
Min 1
Max 120
이렇게 preset을 해놓으면 데이터를 가져 받을 수 있다.
데이터의 validation 넣는 법
https://mongoosejs.com/docs/validation.html
들어오는 데이터의 조건을 코드로 일일이 작성할 필요없이
Mongoose's built-in validation checks 를
사용해서 간단히 해결할 수 있다.
아래 코드 6~10을 보면
rating을 줄 때 1~10 사이로만 줄 수 있게 validation을 해놓았다.
자바스크립트 오브젝트인 { } 컬리 브래이시스를 열어
안에 validators 넣어 조건을 더 구체적으로 깐깐하게 지정해준다.
rating 안의 숫자를 입력할 때
1~10 사이의 숫자만 받을 수 있게 설정하였다.
데이터를 입력할 때
rating에 11을 넣었더니 에러가 났다.
꼭 입력 받아야 하는 데이터인 경우
name 같이 꼭 입력 받아야 하는 경우엔
require: [true, 하고 싶은 말]
이제까지 name, rating, review를 입력받다가
만약 name 입력하지 않았다면
순서가 밀려서 name 자리에 rating이 오는 것이 아니라
name 자리에 undefined라고 나오며 자리를 차지하고 있는 하다.
이제는 name: String을 지우고,
좀 더 자세하게 validation을 설정해준다.
그리고서 저장을 하면
콘솔에서는 validation error가 뜨는데, required에 입력한 내용도 메세지로 뜬다.
입력한 데이터는 데이터 베이스에 입력되지 않는다.
다음 포스트에서는 데이터를 update하고 delete 하는 법에 대해 알아보자.