일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- NODE_ENV
- javascript #js #math #자바스크립트 #랜덤 #랜덤정수
- 비기능적요구사항 #요구사항 #SRS #소프트웨어공학
- serverDevCamp
- DFD #ERD #usecase #유스케이스 #다이어그램 #UML #모델링 #모델링언어
- Lambda Architecture
- binary #opencv
- tweet deck
- 서캠
- stringtoken
- QT Event
- QT SIgnal
- mern
- 몽구스스키마
- quadcore
- qt signal slot
- production mode
- 정보처리기사 #정처기 #정처기가답안 #가답안 #2019년2회차 #2회차 #자격증 #기사 #정보처리산업기사 #큐넷
- dev-ops
- 서버개발캠프
- devlopment mode
- 스마일게이트
- mongoose schema
- yarnpkg update
- Signal Slot
- apt-key list
- opencv #python
- 스마일게이트 서버개발캠프
- mysql grant
- yarnpkg
Archives
- Today
- Total
Ziks
Mongoose 스키마 및 모델 본문
- Mongoose는 MongoDB 및 Node.js를위한 ODM (Object Data Modeling) 라이브러리
- 객체안의 속성들이 필드 이름이 되며 객체 형태로 작성됩니다.
Mongoose 스키마 및 모델 정의
Mongoose에서는 스키마와 모델의 개념이 가장 중요합니다. 스키마를 정의할 때는 주로 데이터의 형식, 데이터의 타입등을 고려하며 작성합니다.
-
스키마는 문서에 어떤 값 또는 특성이 들어가는지 정의
- 데이터베이스의 테이블, 컬렉션 타입 및 속성을 정의하는 문서의 형태 또는 구조
-
모델은 위에서 만들었던 스키마를 통해 만드는 인스턴스
- 작성된 스키마를 인스턴스화 하여 사용할 수 있게 함
-
Collection
- 관계형 데이터베이스의 테이블과 동일
- 여러 JSON 문서 보유 가능
-
Document
- SQL의 레코드와 동일
스키마 작성 및 모델 활용
const mongoose = require('mongoose');
const bookSchema = mongoose.Schema({
bookName: {
type: String,
required: [true, '책 이름이 필요합니다.'],
minlength: 3,
maxlength: 50
},
author: {
type: String,
required: true,
maxlength: 30
},
publishedDate: {
type: Date,
default: Date.now()
},
price: {
type: Number,
default: 0
}
});
const Book = mongoose.model('Book', bookSchema);
module.exports = {Book}
mongoose.Schema를 활용하여 스키마 작성을 진행합니다. bookName, author, publishedDate, price는 각각 필드명을 뜻하며 필드명 내에는 속성을 지정할 수 있습니다. 위의 코드를 예를 들며 설명해보겠습니다.
- bookName
- type은 String(문자열)
- required[true, '책 이름이 필요합니다.']
- required는 반드시 존재하여야 하는 여부를 나타내는 속성이며 만약 작성되지 않을 경우 유효성 검사를 통해 배열의 두번째 값인 '책 이름이 필요합니다.' 가 리턴됩니다.
- minlength & maxlength
- 최소 , 최대길이
- publishedDate
- type은 Date(날짜형식)
- default
- 기본값을 지정해 줄 수 있는 속성입니다.
- Date.now()는 현재 시간을 저장하는 메소드입니다.
- price
- type은 Number(숫자형)
- default는 0으로 지정
- mongoose.model()을 통해 스키마를 인스턴스 화 시켜 타 모듈에서 import하여 사용할 수 있게끔 export 합니다.
- mongoose.model('모델 이름', 스키마)
이외의 다양한 스키마 속성은 Mongoose Document를 참고해주세요
Comments