3. Nest.js 광부왕 게임 서버 로그 저장 [로그 데이터]
2023. 2. 19. 19:07ㆍ프로젝트/게임 서버 - Nest.js
- Log DB
DB : MongoDB
사용 이유 : 대용량의 데이터를 저장 하기 유리한 NoSql 방식의 MongoDB 사용
1. 라이브러리 설치
@nestjs/mongoose mongoose 설치
npm install --save @nestjs/mongoose mongoose
2. model 파일 생성
model 폴더 안에 model 파일 생성
logs.model.ts
* 로그 저장 설정 : 로그 저장 기간은 3개월이 되면 자동으로 제거되도록 설정 한다.
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';
const options = {
timestamps: true,
collection: 'logs',
};
const expire = 1000 * 60 * 60 * 24 * 30 * 12;
@Schema(options)
export class Logs extends Document {
@Prop({
required: true,
default: [],
})
accountLog: any[];
@Prop({
required: true,
default: [],
})
stageLog: any[];
@Prop({
required: true,
default: [],
})
itemLog: any[];
@Prop({
required: true,
default: [],
})
companyLog: any[];
@Prop({
required: true,
})
user: string;
@Prop({
required: true,
})
date: string;
@Prop({ default: Date.now() + expire })
expireAt: Date;
}
export const LogsSchema = SchemaFactory.createForClass(Logs);
3. app.module.ts mongoose Module 설정
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ConfigModule } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Companies } from './model/companies.model';
import { GameRecords } from './model/game-records.mode';
import { Gifts } from './model/gifts.model';
import { Items } from './model/items.model';
import { Stages } from './model/stages.model';
import { Users } from './model/users.model';
//Mongoose Module import
import { MongooseModule } from '@nestjs/mongoose';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
//MongooseModule 설정 부분
MongooseModule.forRoot(process.env.MONGO_DB, {
useNewUrlParser: true,
useUnifiedTopology: true,
}),
TypeOrmModule.forRoot({
type: 'mysql',
host: process.env.MYSQL_HOST,
port: Number(process.env.MYSQL_PORT),
username: process.env.MYSQL_USERNAME,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DB,
entities: [Companies, GameRecords, Gifts, Items, Stages, Users],
synchronize: JSON.parse(process.env.MYSQL_SYNC),
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
728x90
반응형
'프로젝트 > 게임 서버 - Nest.js' 카테고리의 다른 글
5. Nest.js 광부왕 게임 서버 Swagger 적용 (0) | 2023.03.03 |
---|---|
4. Nest.js 광부왕 게임 서버 Redis 설정 [캐시 데이터] (0) | 2023.03.02 |
2. Nest.js 광부왕 게임 서버 Mysql TypeOrm 설정 [게임 데이터] (0) | 2023.02.16 |
1. Nest.js 광부왕 게임 서버 DB 구성 (0) | 2023.02.16 |
0. Nest.js 광부왕 게임 서버 만들기 소개 (0) | 2022.12.14 |