Create(생성), Read(조회), Update(수정), Delete(삭제)
Prisma로 연결되어 있는 데이터베이스의 테이블들을 쉽게 접근할 수 있게 해주는 Client 역할
prisma.schema 파일에서 정의한 테이블, 칼럼 이름 직접 사용 (+ 자동완성)
설치
npm install @prisma/client --save
//data를 추가, 수정하는 post 메소드
//첫번째인자 route, 두번째인자는 controller(요청 들어왔을 때 어떻게 할지)
//async? db에 접근하는 건 통신이다. 통신은 비동기적으로 실행된다.
//await? '기다리는 우선순위를 주는 느낌'?
//비동기는 오래 걸리는 애들을 기다리지 않고 넘어가는데 db에 접근해서 데이터를 다 가져와야 반환할 수 있음
//따라서 db에 접근하는 로직을 await으로 처리, async 안에서만 !
app.post('/categories', async (req, res) => {
prisma.category.create({
data: {
name:'티',
}
});
res.json(category);
});
//data를 가져오는 get 메소드
app.get('/categories', async (req, res) => {
const categories = await prisma.category.findMany();
res.json(categories);
})
SQL문법 사용! => SQL 구문은 SQL 컨벤션을 잘 지켜서 작성 (끝나고 ;)
app.post('/categories', async (req, res) => {
await prisma.$queryRaw`
INSERT INTO drinks (name)
VALUES ('콜드 브루')`;
//추가한 데이터를 보여주기
const [drinks] = await prisma.$queryRaw`
SELECT d.name
FROM drinks d
ORDER BY id DESC
LIMIT 1
`;
res.json(drinks); // []
});
$queryRaw는 항상 배열에 담아서 반환
하나의 데이터만 가져오기 때문에 배열 비구조화 사용 -> [categories] -> 배열 안의 객체로