[Node.js 입문]
Prisma Clinet를 활용한 데이터베이스 상호작용
호지98
2024. 6. 4. 22:22
Prisma Client를 사용하면 데이터베이스와 상호작용하는 것이 매우 직관적이다. findUnique, findFirst, findMany와 같은 메서드를 사용하여 데이터를 조회할 수 있으며, where, include 등의 옵션을 사용하여 조건을 설정하고 관련 데이터를 포함시킬 수 있다.
데이터 조회 메서드
1. findUnique
특정 필드가 유일한 레코드를 조회한다. 주로 기본 키 또는 유니크 필드에 사용된다.
const user = await prisma.user.findUnique({
where: {
id: 1, // 유니크 필드
},
});
console.log(user);
2. findFirst
조건에 맞는 첫 번째 레코드를 조회한다.
const user = await prisma.user.findFirst({
where: {
name: 'Alice', // 조건
},
});
console.log(user);
3. findMany
조건에 맞는 여러 레코드를 조회한다. 결과는 배열로 반환된다.
const users = await prisma.user.findMany({
where: {
name: 'Alice', // 조건
},
});
console.log(users);
조건 설정 (where)
where 옵션을 사용하여 다양한 조건을 설정할 수 있다.
// 단일 조건
const users = await prisma.user.findMany({
where: {
name: 'Alice',
},
});
// 여러 조건
const users = await prisma.user.findMany({
where: {
AND: [
{ name: 'Alice' },
{ email: 'alice@example.com' },
],
},
});
// OR 조건
const users = await prisma.user.findMany({
where: {
OR: [
{ name: 'Alice' },
{ name: 'Bob' },
],
},
});
// NOT 조건
const users = await prisma.user.findMany({
where: {
NOT: {
name: 'Alice',
},
},
});
// 관계된 필드의 조건
const posts = await prisma.post.findMany({
where: {
author: {
is: {
name: 'Alice',
},
},
},
});
관련 데이터 포함 (include)
include 옵션을 사용하여 관련된 데이터를 포함시킬 수 있다.
const post = await prisma.post.findUnique({
where: {
id: 1,
},
include: {
author: true, // author 데이터를 포함
comments: true, // comments 데이터를 포함
},
});
console.log(post);
종합 예제
// User 모델 정의 예시
// model User {
// id Int @id @default(autoincrement())
// name String
// posts Post[]
// }
// model Post {
// id Int @id @default(autoincrement())
// title String
// content String
// userId Int
// user User @relation(fields: [userId], references: [id])
// }
// 1. 단일 사용자 조회 (유니크 필드로)
const user = await prisma.user.findUnique({
where: {
id: 1,
},
include: {
posts: true, // 사용자가 작성한 모든 게시물 포함
},
});
console.log(user);
// 2. 첫 번째 사용자 조회 (조건으로)
const firstUser = await prisma.user.findFirst({
where: {
name: 'Alice',
},
include: {
posts: true,
},
});
console.log(firstUser);
// 3. 여러 사용자 조회 (여러 조건으로)
const users = await prisma.user.findMany({
where: {
OR: [
{ name: 'Alice' },
{ name: 'Bob' },
],
},
include: {
posts: true,
},
});
console.log(users);
이 예제는 Prisma Client를 사용하여 다양한 조건으로 데이터를 조회하고, 관련된 데이터를 포함시키는 방법을 보여준다. 이러한 메서드와 옵션들을 활용하여 데이터베이스와 효율적으로 상호작용할 수 있다.