나만의 작은 도서관
[TIL] 240528 캠프 44일차: prisma: --schema 옵션, $transaction 본문
오늘 배운 내용
yarn remove
yarn add를 통해서 추가한 패키지는 yarn remove를 통해 제거할 수 있다. yarn remove 명령어는 devDependencies와 상관없이 패키지를 삭제한다.
// prettier 패키지 삭제
yarn remove prettier
npx prisma db push --schema 옵션
schema를 2개 이상 사용하는 경우, 각 schema에 따른 DB push가 이루어져야 한다. 이 때 그냥 npx prisma db push를 하게 되면 schema가 2개이기 때문에 원하는 결과가 나오지 않는다. 그렇기 때문에 --schema 옵션을 이용하여 push할 schema를 명시해야한다.
// prisma/user.prisma 스키마를 통해 db에 push
npx prisma db push --schema ./prisma/user.prisma
prisma: $transaction
prisma에서 트랜젝션을 사용하고 싶다면 $transaction을 사용하면 된다. 사용법은 아래와 같다.
// MySQL과 연결된 Prisma 클라이언트를 통해 트랜잭션을 실행합니다.
const [updatedCharacter] = await prisma.$transaction(async (tx) => {
.
.
.
// 캐릭터-인벤토리 DB에서 characterId, itemCode를 가지는 데이터를 가져옵니다.
const inventoryItem = await tx.charactersInventory.findFirst({
where: {
characterId: +characterId,
itemCode: +itemCode,
},
});
.
.
.
// 캐릭터의 소지금을 총 구매 금액만큼 감소시킵니다.
const updatedCharacter = await tx.characters.update({
where: {
characterId: +characterId,
},
data: {
characterMoney: {
decrement: totalPrice,
},
},
});
// 콜백 함수의 리턴값으로 갱신된 캐릭터 정보(updatedCharacter)를 반환합니다.
return [updatedCharacter];
});
쿼리문을 tx로 실행하면 해당 쿼리문은 트랜젝션으로 취급되어 ACID가 보장된다. 즉, 트랜젝션으로 취급된 일부 쿼리문만 실행되는 경우가 발생하지 않는다.
오늘의 Trouble Shooting
- 오늘은 해결한 Trouble이 없어요!
오늘 한 일
더보기
- OSI 계층: 네트워크 계층 글 포스팅
- Node.js 과제 선택 요구사항 전부 구현 완료
- Node.js 과제 깃헙에 연동 및 업로드
'Today I Learn' 카테고리의 다른 글
[TIL] 240530 캠프 46일차: Prisma: include, 관계 속성 사용법 (0) | 2024.05.30 |
---|---|
[TIL] 240529 캠프 45일차: prisma: @map 생략, createMany (0) | 2024.05.29 |
[TIL] 240527 캠프 43일차: 유효성 검사 Joi패키지, 정규식, Prisma Client DB 2개 연결 (0) | 2024.05.27 |
[TIL] 240524 캠프 40일차: jsonwebtoken 라이브러리의 sign() 함수 (0) | 2024.05.24 |
[TIL] 240523 캠프 39일차: 쿠키, 세션, JWT (0) | 2024.05.23 |