#prisma #prisma-graphql
#prisma #prisma-graphql
Вопрос:
Я знаю, что в настоящее время Prisma не поддерживает упорядочение по нескольким скалярным полям (см. Этот выпуск:https://github.com/prisma/prisma/issues/62). Но мне интересно, есть ли кто-нибудь, кто нашел решение для решения этой проблемы без использования мутации executeRaw (raw SQL), потому что у меня есть много мест в моем коде, где мне нужно упорядочивать по нескольким полям, и я не хочу использовать executeRaw во многих местах. Я буду признателен за любые предложения. Спасибо!
Ответ №1:
Начиная с Prisma 2.4, это должно быть в принципе возможно с помощью array в OrderBy:
const users = await prisma.user.findMany({
select: {
email: true,
role: true,
},
orderBy: [
{
email: 'desc',
},
{
role: 'desc',
}
],
})
Найти больше в документах: https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#sort-user-by-multiple-fields—email-and-role
Комментарии:
1. Хорошо, но как мне написать
... ORDER BY (foo = 1) DESC, bar ASC, foo ASC, baz ASC;
?2. Что вы подразумеваете под (foo = 1)?
3. Я хочу, чтобы строки, где foo равно 1, были отсортированы перед остальными. В SQL вы можете сделать это так, как я это написал.
Ответ №2:
Я не думаю, что есть решение, в моем проекте мне нужен случайный порядок, увеличение / уменьшение, агрегирование… используйте raw, наконец.