자주 사용되는 기능 위주로 설명을 드리려고 합니다. 컬럼에 대한 대표적인 옵션들은 아래와 같습니다.
No | 옵션 이름 | 옵션 의미 | 예시 |
---|---|---|---|
1 | type | 속성의 타입 - String, Date, Number ... | type: String type: Date type: Number type: [Number] |
2 | unique | 중복되지 않는 고유값(유일한 값)이어야 한다 | unique: true unique: false |
3 | required | 필수로 요구되는 값인가? | required: true required: [true, "This is required."] required: false |
4 | default | 값이 없는 경우 기본값은 무엇인가? | default: Date.now() |
위에서 언급한 옵션에 따라 테이블의 스키마에 대한 정보를 정의합니다.
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
// 스키마 정의
export const schema = {
id: {
sparse: true,
type: String,
unique: true
},
email: {
required: [true, "Email is required."],
type: String,
unique: true
},
password: {
required: [true, "Password is required."],
type: String
},
};
사용자 테이블로 예를 들면, 로그인 시 비밀번호가 맞는지 비교해주는 함수나 비밀번호를 초기화 해야하는 경우에 사용하는 함수를 스키마 안에 선언해 두고 사용할 수 있습니다. 이렇게 스키마 안에 함수를 선언하기 위해서는 다음과 같이 작성할 수 있습니다.
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
// 스키마 정의
export const schema = { ... };
// 함수 정의
userSchema.methods.camparePassword = function() { ... }
userSchema.methods.resetPassword = function() { ... }
다음은 사용자 테이블이 user 라는 이름인 경우에 mongoose.model 의 3번째 인자로 테이블의 이름을 넘겨주고, 두번째 인자로는 위에서 언급한 옵션을 활용하여 만들어진 schema 객체를 전달합니다.
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
// 스키마 정의
export const schema = { ... };
// 함수 정의
userSchema.methods.camparePassword = function() { ... }
userSchema.methods.resetPassword = function() { ... }
// 스키마 및 모델 생성
const userSchema = new Schema(schema, { timestamps: true });
export const User = mongoose.model("User", userSchema, "user");
[Node/Rest API] SFA - (1) - 인증 모듈과 사용자 모델 (0) | 2020.11.13 |
---|---|
[Node/Rest API] API 리소스를 정의하는 3가지 요소 (0) | 2020.11.12 |
[Node/Rest API] 필요한 미들웨어 등록하기 (0) | 2020.11.10 |
[Node/Rest API] 환경변수 파일 만들기 (0) | 2020.11.10 |
[Node/Rest API] MongoDB 접속모듈 만들기 (0) | 2020.11.10 |