본문 바로가기
BE/Node

[Mongoose] 스키마

by Chars4785 2021. 9. 24.
var mongoose = require('mongoose');

mongoose.connect(url);//url => mongodb://localhost/collections

var exampleSchema = new mongoose.Schema({
   name:{
    type:String,
    required:true
   }
   age:Number
   number:Schema.Types.ObjectId
   created:{
    type:Date,
    default:Date.now
   }
   binary:Buffer,
   living:Boolean
   mixed:Schema.Types.Mixed
   array:[],
   arrayNumber:[Number],
   arrayString:[String]
});

var Data = mongoose.model('data',exampleSchema);

Data.name('lee');
Data.age(22);
Data.binary = new Buffer(0);
Data.living(true);
Data.array.push('array');

String:문자열
Number:정수
Schema.Types.ObjectId: 명시적으로 id 타입을 사용할 때는 이렇게 사용해야 합니다. 그리고 스키마에 정의를 안 해도 자동적으로 몽고에서는 생성합니다. 행을 구분하는 아이디 값으로 사용합니다.
Date:날짜를 나타냅니다.
Buffer:바이너리 타입을 사용할 때 사용합니다.
Boolean:참과 거짓만 값을 저장하고 나타냅니다.
Schema.Types.Mixed:이름 그대로 다양한 타입을 저장할 수 있습니다. 객체나 배열 JSON으로 사용합니다. 타입이 없다고 생각해도 됩니다.
Array:[] 사용으로 배열로 사용합니다. [Number] 정수 배열이라고 생각하시면 됩니다.

 

var exampleSchema = mongoose.Schema({
   firstName:{
    type:String,
    required:true,
    trim:true,
    lowercase:true  
   },
   lastName:{
    type:String,
    trim:true,
    lowercase:true
   }
   age:{
    type:Number,
    required:true,
   }
   created:{
    type:Date,
    default:Date.now
   },
   number:{
    type:Number,
    match:/^\d{3}-\d{3,4}-\d{4}$/
   },
   password:{
    type:String,
    validate:[
      function(password){
       return password&&password.length>6;
      },'비밀번호를 입력하거나 길이가 6보다커야합니다.'
     ]
   },
   author:{
    type:Schema.Types.Id,
    ref:'User'
   }
});

required:꼭 입력해야 한다.
unique:다른 행과 중복되면 안 된다.
trim:공백을 제거합니다.(문자열 타입에 사용)
default:문서가 생성되면 기본값으로 저장됩니다.
lowercase:대문자를 소문자로 저장한다(문자열 타입)
match:정규식으로 저장하려는 값과 비교한다.
validate:함수로 개발자가 조건을 만듭니다.
set:값을 입력할 때 함수로 조건을 만듭니다.
get:값을 출력할 때 함수로 조건을 만듭니다.
ref:해당하는 모델을 참조할 때 사용한다.

 

참고

https://m.blog.naver.com/rwans0397/220696586520

'BE > Node' 카테고리의 다른 글

Nest.js(2)  (0) 2022.06.23
Nest.js(1)  (0) 2021.11.12
[Node] Fastify  (0) 2020.03.13
[Server] MicroServices  (0) 2020.03.06
[Socket] 웹 소켓  (0) 2020.02.11

댓글