티스토리 뷰
728x90
출처
TypeORM 설치
D:\workspace.nodejs\nestjs_example>npm i --save @nestjs/typeorm typeorm mysql2
src/app.module.ts 내용 - 환경 파일 사용하지 않고 연결하기
내용 추가
import { ConfigModule, ConfigService } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [
TypeOrmModule.forRoot({
/*
type: 'mysql',
host: 'localhost',
port: 8200,
username: 'bluex',
password: 'bluex',
database: 'iloveart',
*/
type: 'mysql', // process.env.DB_CONNECTION,
host: process.env.DB_HOST,
port: +process.env.DB_PORT,
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
entities: [],
synchronize: true,
}),
],
전제 내용
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { configValidationSchema } from 'config/validation/config-validation';
import databaseConfig from '../config/database.config';
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
cache: true,
envFilePath: [ '.env.' + process.env.NODE_ENV ],
ignoreEnvFile: process.env.NODE_ENV === 'prod',
//validationSchema: configValidationSchema,
//load: [ databaseConfig ],
}),
TypeOrmModule.forRoot({
/*
type: 'mysql',
host: 'localhost',
port: 8200,
username: 'bluex',
password: 'bluex',
database: 'iloveart',
*/
type: 'mysql', // process.env.DB_CONNECTION,
host: process.env.DB_HOST,
port: +process.env.DB_PORT,
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
entities: [],
synchronize: true,
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
src/app.module.ts 내용 - 환경 파일 사용
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { configValidationSchema } from 'config/validation/config-validation';
import databaseConfig from '../config/database.config';
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
cache: true,
envFilePath: [ '.env.' + process.env.NODE_ENV ],
ignoreEnvFile: process.env.NODE_ENV === 'prod',
validationSchema: configValidationSchema,
load: [ databaseConfig ],
}),
TypeOrmModule.forRootAsync({
imports: [ ConfigModule ],
useFactory: (configService: ConfigService) =>
configService.get('database'),
inject: [ ConfigService ],
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
config/validation/config-validation.ts 내용
import * as Joi from 'joi';
export const configValidationSchema = Joi.object({
// DATABASE
DB_CONNECTION: Joi.string().min(1).required(),
DB_HOST: Joi.string().min(1).required(),
DB_PORT: Joi.string().min(1).required(),
DB_DATABASE: Joi.string().min(1).required(),
DB_USERNAME: Joi.string().min(1).required(),
DB_PASSWORD: Joi.string().optional(),
});
config/database.config.ts 내용
import { registerAs } from '@nestjs/config';
import { User } from '../src/v1/users/entities/user.entity';
export default registerAs('database', () => {
return {
'name': 'default',
'type': process.env.DB_CONNECTION,
'host': process.env.DB_HOST,
'port': process.env.DB_PORT,
'username': process.env.DB_USERNAME,
'password': process.env.DB_PASSWORD,
'database': process.env.DB_DATABASE,
'entities': [
// 'dist/**/*.entity{.ts,.js}'
User
],
'synchronize': false,
'migrationsTableName': 'migrations_histories',
'migrationsRun': true,
'logging': false
// 'ssl': false,
// 'extra': {
// 'ssl': {
// 'rejectUnauthorized': false
// }
// }
}
});
src\v1\users\entities\user.entity.ts 내용
import {Column, Entity, PrimaryGeneratedColumn} from 'typeorm';
@Entity({ name: 'users' })
export class User {
@PrimaryGeneratedColumn()
public id: number;
@Column()
public roleId: number;
@Column()
public avatarId: number;
@Column()
public nickname: string;
@Column()
public email: string;
@Column()
public phone: string;
@Column()
public phoneWithCountryCode: string;
@Column()
public bio: string;
}
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- MySQL
- oracle
- ubuntu
- 지스타2007
- SAS
- BPI-M4
- 전예희
- 튜닝쇼 2008
- Delphi Tip
- 송주경
- 레이싱모델 익스트림 포토 페스티벌
- 동경
- Xcode
- koba2010
- Mac
- Java
- Delphi
- Linux
- 일본여행
- NDK
- ffmpeg
- JavaScript
- Spring
- ble
- Spring MVC
- 서울오토살롱
- KOBA
- android
- sas2009
- flex
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함