⚙️백엔드 : Backend/Prisma
prisma를 이용한 CRUD 동작
예옹이
2024. 5. 19. 16:29
안녕하세요 예옹이입니다.
오늘은 prisma를 이용한 간단한 CRUD 동작을 구현해보겠습니다!
제 블로그로 많은 도움 되시길 바랍니다.
0. 기본 파일 구조
import { PrismaClient } from "@prisma/client";
const prisma = new PrismaClient();
// CRUD 기능의 함수들
...
export {
// CRUD 기능의 함수명
...
}
기본 파일 구조를 잡아줍니다.
먼저 PrismaClient를 import 해줍니다.
그리고 const를 사용해 PrismaClient 인스턴스를 생성해 prisma라는 변수에 할당합니다.
1. CREATE
프론트가 준 req를 받아와 User 테이블에 레코드를 하나 쌓는 서비스를 만들어보겠습니다.
const createUser = async (
// 프론트에서 오는 정보와 형식 지정
reqUserName: string,
reqUserColor: string,
reqEmail: string
) => {
try {
// 프론트에서 주는 정보를 데이터베이스에 생성
const reqData = await prisma.user.create({
data: {
userName: reqUserName,
userColor: reqUserColor,
email: reqEmail
}
})
// 프론트로 반환해줄 데이터 이름과 형식 지정
const resData = {
userId: reqData.id,
userName: reqData.userName,
userColor: reqData.userColor,
email: reqData.email
}
return resData
} catch (error){
throw new Error('error at creating user!')
}
};
export {
createUser
}
2. UPDATE
방금 쌓은 레코드를 수정하는 서비스를 만들어보겠습니다.
const updateUser = async (
// 프론트에서 오는 정보와 형식 지정
reqUserName: string,
reqUserColor: string,
reqEmail: string
) => {
try {
// 프론트에서 주는 정보로 수정
const reqData = await prisma.user.update({
data: {
userName: reqUserName,
userColor: reqUserColor,
email: reqEmail
}
})
// 프론트로 반환해줄 이름과 형식 지정
const resData = {
userId: reqData.id,
userName: reqData.userName,
userColor: reqData.userColor,
email: reqData.email
}
return resData
} catch (error){
throw new Error('error at updating user!')
}
};
export {
updateUser
}
3. GET
테이블의 레코드를 반환하는 서비스를 만들어보겠습니다.
const getUser = async (
// 프론트에서 오는 정보와 형식 지정
userId: number
) => {
try {
// 받아온 userId로 해당 유저의 원하는 정보 반환
const getData = await prisma.user.findMany({
where: {
id: userId,
},
select: {
id: false, // id는 반환해주지 않음
userName: true, // userName, userColor, email은 반환해줌
userColor: true,
email: true,
},
});
return getData;
} catch (error) {
throw new Error("error at getting user!");
}
};
export {
getUser
};
4. DELETE
레코드를 지우는 서비스를 만들어보겠습니다.
const deleteUser = async (
// 프론트에서 오는 정보와 형식 지정
userId: number
) => {
try {
// 받아온 userId로 해당 유저 레코드를 지움
const deleteData = await prisma.user.delete({
where: {
id: userId,
}
});
return 0;
} catch (error) {
throw new Error("error at deleting user!");
}
};
export {
deleteUser
};