[NestJS] - Type ORM (2)

morecodeplease·2024년 12월 2일
0

NestJS TIL

목록 보기
6/9
post-thumbnail

😇 1. Repository란?

✅ TypeORM에서 제공하는 데이터 접근 계층(Data Access Layer)으로, 데이터베이스 작업(CRUD)을 수행하기 위한 API를 제공해준다.


주요 특징 or 기능

  • 데이터 검색
  • 데이터 생성, 업데이트, 삭제
  • 관계 데이터 처리
  • 복잡한 쿼리 작성(QueryBuilder)

주요 메서드

메서드 이름설명
find조건 없이 모든 데이터를 조회
findOne단일 데이터 조회
save엔티티를 저장하거나 업데이트
remove데이터를 삭제
count데이터의 개수 조회
create새 엔티티를 생성하지만 저장하지 않음
update데이터를 부분적으로 업데이트

이 외에도 다양한 메서드를 지원한다.

👌 메서드 사용예시

1. find

// 모든 사용자 조회
const allUsers = await userRepository.find();

// 조건에 맞는 사용자 조회
const activeUsers = await userRepository.find({
  where: { isActive: true },
  order: { createdAt: 'DESC' },
});
  • 조건 없이 모든 데이터를 조회하거나 특정 조건으로 데이터를 조회한다.

2. findOne

// 특정 ID로 사용자 조회
const user = await userRepository.findOne({ where: { id: 1 } });

// 이메일로 사용자 조회
const userByEmail = await userRepository.findOne({ where: { email: 'john@example.com' } });
  • 단일 데이터를 조회한다. 조건이 없으면 첫 번째 데이터를 반환한다.

3. save

const newUser = userRepository.create({ name: 'John', email: 'john@example.com', isActive: true });
await userRepository.save(newUser);
  • 엔티티를 데이터베이스에 저장하거나 업데이트한다.

4. remove

// 사용자 삭제
const userToDelete = await userRepository.findOne({ where: { id: 1 } });
if (userToDelete) {
await userRepository.remove(userToDelete);
}
  • 엔티티를 데이터베이스에서 삭제한다. 삭제하려면 먼저 엔티티를 불러와야 한다.

5. count

// 모든 사용자 수
const totalUsers = await userRepository.count();

// 활성화된 사용자 수
const activeUsersCount = await userRepository.count({ where: { isActive: true } });
  • 전체 or 특정 조건에 맞는 데이터의 개수를 반환한다.

6. create

// 새 사용자 생성 (저장하지 않음)
const newUser = userRepository.create({ name: 'Jane', email: 'jane@example.com' });
console.log(newUser); 
  • 새로운 엔티티 인스턴스를 생성하지만 데이터베이스에는 저장하지 않는다. (이후에 저장 가능)

7. update

// 사용자 이름 업데이트
await userRepository.update({ id: 1 }, { name: 'Updated Name' });
  • 특정 조건에 맞는 데이터를 부분적으로 업데이트한다.

참조

profile
Everyday's a lesson

0개의 댓글