본문 바로가기
Databases/MongoDB | Mongoose

[Mongoose] Data Validation | 제약 걸기

by CodeMia 2021. 11. 21.

데이터 입력해 들어올 때 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 넣어 조건을 더 구체적으로 깐깐하게 지정해준다. 

app.js

 

rating 안의 숫자를 입력할 때 

1~10 사이의 숫자만 받을 수 있게 설정하였다. 

app.js

 

데이터를 입력할 때 

rating에 11을 넣었더니 에러가 났다. 

app.js
console.log

 


 

꼭 입력 받아야 하는 데이터인 경우 

name 같이 꼭 입력 받아야 하는 경우엔 

require: [true, 하고 싶은 말]

 

이제까지 name, rating, review를 입력받다가 

만약 name 입력하지 않았다면 

 

 

순서가 밀려서 name 자리에 rating이 오는 것이 아니라 

name 자리에 undefined라고 나오며 자리를 차지하고 있는 하다. 

mongosh

 

 

 

이제는 name: String을 지우고, 

좀 더 자세하게 validation을 설정해준다. 

 

그리고서 저장을 하면 

콘솔에서는 validation error가 뜨는데, required에 입력한 내용도 메세지로 뜬다. 

입력한 데이터는 데이터 베이스에 입력되지 않는다

 

 

 

다음 포스트에서는 데이터를 update하고 delete 하는 법에 대해 알아보자. 

 


const mongoose = require('mongoose');
mongoose.connect("mongodb://localhost:27017/fruitsDB", { useNewUrlParser: true });

const fruitSchema = new mongoose.Schema({
name: {
type: String,
required: [true, "Please check your data entry, no name specified! "]
},
rating: {
type: Number,
min: 1,
max: 10
},
review: String
});

const Fruit = mongoose.model("Fruit", fruitSchema);

const fruit = new Fruit({
rating: 8,
review: "Pretty solid as a fruit."
});

fruit.save();


Fruit.find(function(err, fruits) {
if (err) {
console.log(err);
} else {
mongoose.connection.close();

fruits.forEach((fruit) => {
console.log(fruit.name);
});
}
});

 

'Databases > MongoDB | Mongoose' 카테고리의 다른 글

[Mongoose] DELETE  (0) 2021.11.21
[Mongoose] Update  (0) 2021.11.21
[Mongoose] READING | find() | close()연결끊기  (0) 2021.11.19
[Mongoose] 몽구스 시작하기 | INSERT | INSERT MANY  (0) 2021.11.19
[MongoDB] CRUD - DELETE  (0) 2021.11.15

댓글