본문 바로가기
Node.js/NestJs

[User] Model 작성 #1

by Ykie 2023. 4. 6.
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

댓글