Read
모든 예시는 예시 스키마를 기반으로 합니다.
ID 또는 고유 식별자로 레코드 가져오기
다음 findUnique 질의는 고유 식별자 또는 ID로 단일 레코드를 반환합니다.
ts// 고유 식별자 사용const user = await prisma.user.findUnique({where: {email: 'elsa@prisma.io',},})// ID 사용const user = await prisma.user.findUnique({where: {id: 99,},})
ts// 고유 식별자 사용const user = await prisma.user.findUnique({where: {email: 'elsa@prisma.io',},})// ID 사용const user = await prisma.user.findUnique({where: {id: 99,},})
복합 ID 또는 복합 고유 식별자로 레코드 가져오기
다음 예시는 @@id 또는 @@unique로 정의된 복합 ID 또는 고유 식별자로 레코드를 검색하는 방법을 보여줍니다.
다음 프리즈마 모델은 복합 ID를 정의합니다.
prismamodel TimePeriod {year Intquarter Inttotal Decimal@@id([year, quarter])}
prismamodel TimePeriod {year Intquarter Inttotal Decimal@@id([year, quarter])}
이 복합 ID로 기간을 검색하려면 fieldName1_fieldName2 패턴을 따르는, 생성된 year_quarter 필드를 사용합니다.
tsconst timePeriod = await prisma.timePeriod.findUnique({where: {year_quarter: {quarter: 4,year: 2020,},},})
tsconst timePeriod = await prisma.timePeriod.findUnique({where: {year_quarter: {quarter: 4,year: 2020,},},})
다음 프리즈마 모델은 커스텀 이름(timePeriodId)으로 복합 고유 식별자를 정의합니다.
prismamodel TimePeriod {year Intquarter Inttotal Decimal@@unique(fields: [year, quarter], name: "timePeriodId")}
prismamodel TimePeriod {year Intquarter Inttotal Decimal@@unique(fields: [year, quarter], name: "timePeriodId")}
이 고유 식별자로 기간을 검색하려면 커스텀 timePeriodId 필드를 사용합니다.
tsconst timePeriod = await prisma.timePeriod.findUnique({where: {timePeriodId: {quarter: 4,year: 2020,},},})
tsconst timePeriod = await prisma.timePeriod.findUnique({where: {timePeriodId: {quarter: 4,year: 2020,},},})
모든 레코드 가져오기
다음 findMany 질의는 모든 User 레코드를 반환합니다.
tsconst users = await prisma.user.findMany()
tsconst users = await prisma.user.findMany()
결과에 페이지를 매길 수도 있습니다.
특정 기준과 일치하는 첫 번째 레코드 가져오기
다음 findFirst 질의는 좋아요가 100개 이상인 게시물이 하나 이상 있는 가장 최근에 생성된 사용자를 반환합니다.
- 내림차순 ID로 사용자 정렬함 (가장 큰 것부터) - 가장 큰 ID가 가장 최근 것
- 좋아요가 100개 이상인 게시물이 하나 이상 있는 첫 번째 사용자를 내림차순으로 반환함
tsconst findUser = await prisma.user.findFirst({where: {posts: {some: {likes: {gt: 100}}}},orderBy: {id: "desc"}})
tsconst findUser = await prisma.user.findFirst({where: {posts: {some: {likes: {gt: 100}}}},orderBy: {id: "desc"}})
필터링된 레코드 목록 가져오기
프리즈마 클라이언트는 레코드 필드 및 관련 레코드 필드에 대한 필터링을 지원합니다.
단일 필드 값으로 필터링하기
다음 질의는 "prisma.io"으로 끝나는 이메일이 있는 모든 User 레코드를 반환합니다.
tsconst users = await prisma.user.findMany({where: {email: {endsWith: "prisma.io"}},}
tsconst users = await prisma.user.findMany({where: {email: {endsWith: "prisma.io"}},}
여러 필드 값으로 필터링하기
다음 질의는 연산자 조합을 사용합니다. 이름이 E로 시작하는 사용자 또는 프로필 뷰가 1개 이상 있는 관리자를 반환합니다.
tsconst users = await prisma.user.findMany({where: {OR: [{name: {startsWith: 'E',},},{AND: {profileViews: {gt: 0,},role: {equals: 'ADMIN',},},},],},})
tsconst users = await prisma.user.findMany({where: {OR: [{name: {startsWith: 'E',},},{AND: {profileViews: {gt: 0,},role: {equals: 'ADMIN',},},},],},})
관련 레코드 필드 값으로 필터링하기
다음 질의는 prisma.io로 끝나는 이메일이 있고 게시되지 않은 게시물이 하나 이상(some) 있는 사용자를 반환합니다.
tsconst users = await prisma.user.findMany({where: {email: {endsWith: "prisma.io"},posts: {some: {published: false}}},}
tsconst users = await prisma.user.findMany({where: {email: {endsWith: "prisma.io"},posts: {some: {published: false}}},}
관련 필드 값 필터링에 대한 자세한 내용은 관계 질의를 참고하세요.
필드의 하위 집합 선택하기
다음 findUnique 질의는 select를 사용하여 특정 User 레코드의 email과 name 필드를 반환합니다.
tsconst user = await prisma.user.findUnique({where: {email: 'emma@prisma.io',},select: {email: true,name: true,},})
tsconst user = await prisma.user.findUnique({where: {email: 'emma@prisma.io',},select: {email: true,name: true,},})
결과ts{ email: 'emma@prisma.io', name: "Emma" }
결과ts{ email: 'emma@prisma.io', name: "Emma" }
관계 포함에 대한 자세한 내용은 다음을 참고하세요.
관련 레코드 필드의 하위 집합 선택하기
다음 질의는 중첩 select를 사용하여 다음을 반환합니다.
- 사용자의
email - 각 게시물의
likes필드
tsconst user = await prisma.user.findUnique({where: {email: 'emma@prisma.io',},select: {email: true,posts: {select: {likes: true,},},},})
tsconst user = await prisma.user.findUnique({where: {email: 'emma@prisma.io',},select: {email: true,posts: {select: {likes: true,},},},})
결과ts{ email: 'emma@prisma.io', posts: [ { likes: 0 }, { likes: 0 } ] }
결과ts{ email: 'emma@prisma.io', posts: [ { likes: 0 }, { likes: 0 } ] }
관련 레코드 포함하기
다음 질의는 모든 ADMIN 사용자를 반환하고 결과에 각 사용자의 게시물을 포함합니다.
tsconst users = await prisma.user.findMany({where: {role: 'ADMIN',},include: {posts: true,},})
tsconst users = await prisma.user.findMany({where: {role: 'ADMIN',},include: {posts: true,},})
결과ts{"id": 38,"name": "Maria","email": "maria@prisma.io","profileViews": 20,"role": "ADMIN","coinflips": [true,false,false],"posts": []},{"id": 39,"name": "Oni","email": "oni2@prisma.io","profileViews": 20,"role": "ADMIN","coinflips": [true,false,false],"posts": [{"id": 25,"authorId": 39,"title": "My awesome post","published": true,"comments": null,"views": 0,"likes": 0}]}
결과ts{"id": 38,"name": "Maria","email": "maria@prisma.io","profileViews": 20,"role": "ADMIN","coinflips": [true,false,false],"posts": []},{"id": 39,"name": "Oni","email": "oni2@prisma.io","profileViews": 20,"role": "ADMIN","coinflips": [true,false,false],"posts": [{"id": 25,"authorId": 39,"title": "My awesome post","published": true,"comments": null,"views": 0,"likes": 0}]}