npx skills add ...
npx skills add prisma/cursor-plugin --skill prisma-client-api-query-options
npx skills add prisma/cursor-plugin --skill prisma-client-api-query-options
Query Options. Reference when using this Prisma feature.
Options for controlling query behavior.
Choose specific fields to return:
Include related records:
Exclude specific fields:
Note: Cannot use select and omit together.
Filter records:
See filters.md for detailed filter operators.
Sort results:
Pagination:
Cursor-based pagination:
Return unique values:
const user = await prisma.user.findUnique({
where: { id: 1 },
select: {
name: true,
posts: {
select: {
title: true,
published: true
}
}
}
})const user = await prisma.user.findMany({
select: {
name: true,
posts: {
include: {
comments: true
}
}
}
})const users = await prisma.user.findMany({
select: {
name: true,
_count: {
select: { posts: true }
}
}
})
// Returns: { name: 'Alice', _count: { posts: 5 } }const user = await prisma.user.findUnique({
where: { id: 1 },
include: {
posts: true,
profile: true
}
})const user = await prisma.user.findUnique({
where: { id: 1 },
include: {
posts: {
where: { published: true },
orderBy: { createdAt: 'desc' },
take: 5
}
}
})const user = await prisma.user.findUnique({
where: { id: 1 },
include: {
posts: {
include: {
comments: {
include: {
author: true
}
}
}
}
}
})const users = await prisma.user.findMany({
include: {
_count: {
select: { posts: true, followers: true }
}
}
})const user = await prisma.user.findUnique({
where: { id: 1 },
omit: {
password: true
}
})
// Returns all fields except passwordconst users = await prisma.user.findMany({
omit: { password: true },
include: {
posts: {
omit: { content: true }
}
}
})const users = await prisma.user.findMany({
where: {
email: { contains: '@prisma.io' },
role: 'ADMIN'
}
})// Single field
const users = await prisma.user.findMany({
orderBy: { name: 'asc' }
})
// Multiple fields
const users = await prisma.user.findMany({
orderBy: [
{ role: 'desc' },
{ name: 'asc' }
]
})const users = await prisma.user.findMany({
orderBy: {
posts: { _count: 'desc' }
}
})const users = await prisma.user.findMany({
orderBy: {
name: { sort: 'asc', nulls: 'last' }
}
})// First page
const users = await prisma.user.findMany({
take: 10,
skip: 0
})
// Second page
const users = await prisma.user.findMany({
take: 10,
skip: 10
})const lastUsers = await prisma.user.findMany({
take: -10,
orderBy: { id: 'asc' }
})
// Returns last 10 users// First page
const firstPage = await prisma.user.findMany({
take: 10,
orderBy: { id: 'asc' }
})
// Next page using cursor
const nextPage = await prisma.user.findMany({
take: 10,
skip: 1, // Skip the cursor record
cursor: { id: firstPage[firstPage.length - 1].id },
orderBy: { id: 'asc' }
})const cities = await prisma.user.findMany({
distinct: ['city'],
select: { city: true }
})const locations = await prisma.user.findMany({
distinct: ['city', 'country']
})