prisma client API, 사용 예시
index
- data
- where
- select
- connect
- include
data [create, update]
record를 create하거나 update 할 때 들어갈 key와 value의 기입할 때 사용
const result = await client.product.create({
data: {
name : "",
price: 12,
description: "",
imgae: "",
},
});
where [read]
검색하고자 하는 컬럼을 지정하고자 할 때 사용
// 특정 컬럼에 구분짓지 않고, 모든 product을 조회하겠다.
// "where이 없으면 모든 대상에서 조회하겠다" 라는 의미
const result = await client.product.findMany({});
// product의 컬럼 중에 id가 2인 모든 것을 조회하겠다.
const result = await client.product.findMany({
where: {
id: 2
}
});
// product의 컬럼 중에 name이 '갤럭시'이고, price가 123 인 것을 모두 조회하겠다.
const result = await client.product.findMany({
where: {
name: '갤럭시',
price: 123,
}
});
select [read]
where에서 선택한 데이터 중에서 특정 key값만 추출하고자 할 때 사용
const result = await client.product.findMany({
where: {
id: 2,
},
select: {
name: true,
price: true,
}
});
// { name: "", price: "" }
connect [create, update]
create 또는 update를 할 때만 사용 가능하며, 목적은 레코드를 추가할 때 @relation 관계에 있는 table의 어떠한 값과 연결시킬 것인지 지정하고자 할 때 사용한다. 아래 코드에서는 product을 추가할 때, 해당 product의 user, user 중에서 id가 어떤 것인지 지정한다. 이것을 사용하려면 양쪽의 field가 @relation으로 연결되어 있어야 한다.
const result = await client.product.create({
data: {
name : "",
price: 12,
description: "",
imgae: "",
user: {
connect: {
id: 18,
}
}
},
});
생성된 것을 조회하면, connect에서 연결했던 userId: 18
이 정보로 포함되어 있는 것을 확인 할 수 있다. 단순히 userId 18 뿐만 아니라, user의 전체 정보를 조회 할 수 있다.
[
{
id: 7,
createdAt: 2022-03-20T14:24:13.100Z,
updatedAt: 2022-03-20T14:24:13.101Z,
userId: 18,
image: 'xxx',
name: '',
price: 12,
description: '12',
user: {
id: 18,
phone: null,
email: '[email protected]',
name: 'Anonymous',
avatar: null,
createdAt: 2022-03-01T07:04:26.393Z,
updatedAt: 2022-03-01T07:04:26.395Z
}
}
]
include [read]
관계를 이루고 있는 필드를 현재 조회한 쿼리에 포함시킬 때 사용
const result = await client.product.findMany({
where: {
id: 2,
},
include: {
user: true,
}
});
조회 결과 : user와 product은 schema에서 @relation 되어 있음
[
{
id: 2,
createdAt: 2022-03-13T10:46:04.141Z,
updatedAt: 2022-03-20T12:48:06.522Z,
userId: 19,
image: 'xxx',
name: '갤럭시',
price: 123,
description: '이것은 첫번째',
user: {
id: 19,
phone: '01099025911',
email: null,
name: 'Anonymous',
avatar: null,
createdAt: 2022-03-02T15:06:12.018Z,
updatedAt: 2022-03-02T15:06:12.019Z
}
}
]
+select와 함께 사용하기
const result = await client.product.findMany({
where: {
id: 2,
},
include: {
user: {
select: {
name: true,
id: true,
}
}
}
});
조회 결과
[
{
id: 2,
createdAt: 2022-03-13T10:46:04.141Z,
updatedAt: 2022-03-20T12:48:06.522Z,
userId: 19,
image: 'xxx',
name: '갤럭시',
price: 123,
description: '이것은 첫번째',
user: { id: 19, name: 'Anonymous' }
}
]
connectOrCreate
고유 id 에 의해 기존 레코드를 연결하거나 또는 레코드가 존재하지 않으면, 레코드를 새로 생성할 때 사용한다.
// user : { phone: phone } 또는 { email: email } ==> phone과 email 모두 `@unique`
const token = await client.token.create({
data: {
payload, // token number
// token의 user 정보는 where 정보를 조회 했을 때
// 이미 있으면, connect 하고
// 없으면, { name: '', ...user } 로 user를 생성한다.
// token 생성 쿼리에서 user를 생성할 수도 있다.
user: {
connectOrCreate: {
where: {
...user,
},
create: {
name: "Anonymous",
...user,
},
},
},
},
});
Author And Source
이 문제에 관하여(prisma client API, 사용 예시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@with-key/prisma-client-API-사용-예시저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)