728x90
Common Module
id, create_at, update_at 등 공통요소 관리
export class CoreEntity {
@PrimaryGeneratedColumn() // @Column()의 옵션인 primary를 대체할 수 있습니다. PK를 만드는 역할
@Field((type) => Number)
id: number;
@CreateDateColumn() // 해당 열이 추가된 시각을 자동으로 기록합니다. 옵션을 적지 않을시 datetime 타입으로 기록
@Field((type) => Date)
createdAt: Date;
@UpdateDateColumn() // 해당 열이 수정된 시각을 자동으로 기록합니다. 옵션을 적지 않을시 datetime 타입으로 기록
@Field((type) => Date)
updatedAt: Date;
}
Users module 만들기
- nest g mo users
@InputType({ isAbstract: true })
@ObjectType()
@Entity()
export class User extends CoreEntity {
@Column()
@Field((type) => String)
email: string;
@Column()
@Field((type) => String)
password: string;
@Column()
@Field((type) => String)
role: UserRole;
}
graphql을 위해 resolver, service 작성
- services는 repository를 필요로 한다. users.module에 imports 추가
// user.module.ts
@Module({
imports: [TypeOrmModule.forFeature([User])],
providers: [UsersResolver, UsersService], // 아래 작성된 service와 resolver를 추가
})
export class UsersModule {}
// user.service.ts
@Injectable()
export class UsersService {
constructor(
@InjectRepository(User) private readonly users: Repository<User>,
) {}
}
// user.resolver.ts
@Resolver((of) => User) // of는 없어도 되는 그냥 형식적인 표현. 다른 text로 대체 가능
export class UsersResolver {
constructor(private readonly userService: UsersService) {}
}
728x90
'Node.js > NestJs' 카테고리의 다른 글
[User] Authentication #2 JWT Module (0) | 2023.04.07 |
---|---|
[User] Authentication #1 - login (0) | 2023.04.07 |
[User] Model #3 Create Account (+ Hashing Password) (0) | 2023.04.06 |
[User] Model #2 graphql enum (0) | 2023.04.06 |
TypeOrm Decorator (0) | 2023.04.06 |
댓글