Перейти к содержанию

Фильтры и операторы

Фильтры

equals — значение равняется n

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
const usersWithNameHarry = await prisma.user.findMany({
    where: {
        name: {
            equals: 'Harry',
        },
    },
});

// `equals` может быть опущено
const usersWithNameHarry = await prisma.user.findMany({
    where: {
        name: 'Harry',
    },
});

not — значение не равняется n;

in — значение n содержится в списке (массиве)

1
2
3
4
5
6
7
8
const usersWithNameAliceOrBob = await prisma.user.findMany({
    where: {
        user_name: {
            // !
            in: ['Alice', 'Bob'],
        },
    },
});

notInn не содержится в списке;

ltn меньше x

1
2
3
4
5
6
7
const notPopularPosts = await prisma.post.findMany({
    where: {
        likeCount: {
            lt: 100,
        },
    },
});

lten меньше или равно x;

gtn больше x;

gten больше или равно x;

containsn содержит x

1
2
3
4
5
6
7
const admins = await prisma.user.findMany({
    where: {
        email: {
            contains: 'admin',
        },
    },
});

startsWithn начинается с x

1
2
3
4
5
6
7
8
9
const usersWithNameStartsWithA = await prisma.user.findMany(
    {
        where: {
            user_name: {
                startsWith: 'A',
            },
        },
    }
);

endsWithn заканчивается x.

Операторы

AND — все условия должны возвращать true

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
const notPublishedPostsAboutTypeScript = await prisma.post.findMany(
    {
        where: {
            AND: [
                {
                    title: {
                        contains: 'TypeScript',
                    },
                },
                {
                    published: false,
                },
            ],
        },
    }
);

Обратите внимание: оператор указывается до названия поля (снаружи поля), а фильтр после (внутри).

OR — хотя бы одно условие должно возвращать true;

NOT — все условия должны возвращать false.

Фильтры для связанных записей

some — возвращает все связанные записи, соответствующие одному или более критерию фильтрации

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
const usersWithPostsAboutTypeScript = await prisma.user.findMany(
    {
        where: {
            posts: {
                some: {
                    title: {
                        contains: 'TypeScript',
                    },
                },
            },
        },
    }
);

every — возвращает все связанные записи, соответствующие всем критериям;

none — возвращает все связанные записи, не соответствующие ни одному критерию;

is — возвращает все связанные записи, соответствующие критерию;

notIs — возвращает все связанные записи, не соответствующие критерию.

Комментарии