쿼리 로그로 찍어줄 수 있음.
import * as mongoose from 'mongoose';
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(LoggerMiddleware).forRoutes('cats');
mongoose.set('debug', true);
}
}
이런식으로 사용하면 쿼리를 log로 찍어준다.
프로덕션으로 할 때는 false로 잡아야 한다.
그래서 env 파일로 관리하는 것이 좋다.
스키마 설계
cats.schema.ts를 만든다
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { HydratedDocument } from 'mongoose';
export type CatDocument = HydratedDocument<Cat>;
const options: SchemaOptions = {
timestamps: true,
};
@Schema(options)
export class Cat {
@Prop()
name: string;
@Prop()
age: number;
@Prop()
breed: string;
}
export const CatSchema = SchemaFactory.createForClass(Cat);
@Schema 데코레이션을 사용하여 스키마를 만들어줌.
timestamp 라는 것은 시간별로 로그 찍어주는 것.
@Prop 안에는
@Prop({
required: true,
unique: true
})
이런식으로 세팅 해주는게 필요할 수 있다.
Class Validator
npm i --save class-validator class-transformer
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { IsEmail, IsNotEmpty, IsString } from 'class-validator';
import { Document, SchemaOptions } from 'mongoose';
const options: SchemaOptions = {
timestamps: true,
};
@Schema(options)
export class Cat extends Document {
@Prop({
required: true,
unique: true,
})
@IsEmail()
@IsNotEmpty()
email: string;
@Prop({
required: true,
})
@IsString()
@IsNotEmpty()
name: string;
@Prop({
required: true,
})
@IsString()
@IsNotEmpty()
password: string;
@Prop()
@IsString()
imgUrl: string;
}
export const CatSchema = SchemaFactory.createForClass(Cat);
이렇게 하면 해당 class attribute에 조건을 줄 수 있다.