복습하듯 쭉 돌려보고...
입문주차에서 AWS 배포 관련 강의자료도 한 번 더 살펴봄
왜 자꾸 에러가 나나 했더니, git pull을 한 뒤에 npx prisma generate를 해주지 않아서 aws 서버 안에 설치되어 있던 prisma와 마이그레이션 관련 충돌이 나는 모양이었다...
스키마 등 prisma 관련 파일이 변경되면 git pull후에 프리즈마 generate를 한 번 더 해줄것
delete를 전송해서 회원 탈퇴(삭제) 기능을 만드려고 했는데 자꾸 오류가 났다. 살펴보니까 token 테이블과 Users 테이블이 엮인 포린 키 관련 에러처럼 보였다. 회원 탈퇴를 할 때 해당 유저의 token 정보가 테이블에 남아 있어서... (userId를 외래키로 공유중) Foreign Key Constraint Failed 에러가 나는 것.
회원 삭제를 진행할 때 토큰 테이블의 데이터도 삭제해주는 로직을 추가하니까 정상적으로 처리되었다.
그런데 분명 지난 번 강의에서 포린키로 묶은 데이터가 변경될 때 다른 데이터에 어떻게 반영할지 수동으로 설정할 수 있는 옵션이 있다고 들은 것 같아서... 찾아봄.
ON DELETE CASCADE 옵션 주면 된다고 함.
model RefreshTokens {
id Int @id @default(autoincrement())
userId Int @unique
token String @unique
expiresAt DateTime
createdAt DateTime @default(now())
user Users @relation(fields: [userId], references: [userId], onDelete: Cascade)
@@map("RefreshTokens")
}
이러면 리프래시 토큰 테이블과 연결된 유저 데이터가 삭제될 때 토큰도 자동으로 삭제된다. 이걸로 리팩토링 하고 테스트해봐야겠다...
참고
https://developers.kakao.com/
https://devhaks.github.io/2019/05/31/oauth2/