Ответ
Для сортировки в Prisma используйте параметр orderBy в запросе. Можно сортировать по одному или нескольким полям, указывая направление (asc или desc).
Пример сортировки пользователей по имени (A-Z) и дате регистрации (новые сначала):
const users = await prisma.user.findMany({
orderBy: [
{ name: 'asc' },
{ createdAt: 'desc' }
]
});
Для динамической сортировки можно передавать параметры извне:
const sortField = 'email';
const sortOrder = 'desc';
const users = await prisma.user.findMany({
orderBy: { [sortField]: sortOrder }
});
Примечания:
- Можно сортировать по связанным моделям через вложенный
orderBy - Для сложных сортировок используйте
orderByс несколькими полями - Работает с
findMany,findFirst,findUniqueи агрегациями
Ответ 18+ 🔞
Да ты посмотри, какой народ-то пошёл! Всё им разжёвывай, как младенцам, про сортировку в Prisma. Ну ладно, слушай сюда, раз уж такой тугой.
Вот есть у тебя эта штука — orderBy. Её, блядь, в запрос суёшь, и она всё по полочкам раскладывает. Хочешь по алфавиту — asc, хочешь задом наперёд — desc. Всё просто, как три копейки.
Вот, смотри, как людей по имени да по дате регистрации построить:
const users = await prisma.user.findMany({
orderBy: [
{ name: 'asc' }, // От А до Я, логично же
{ createdAt: 'desc' } // Сначала новенькие, чтоб на виду были
]
});
А если тебе с фронта прилетает, какой поле сортировать, то вообще красота:
const sortField = 'email'; // Допустим, по почте
const sortOrder = 'desc'; // С конца алфавита
const users = await prisma.user.findMany({
orderBy: { [sortField]: sortOrder } // Подставляем как есть, и всё работает
});
Во, ёпта, смотри какие фокусы! Квадратные скобки — это ж магия, они подставят туда строку из переменной. Не надо никаких if на десять экранов.
На заметку, чтобы не облажаться:
- Хочешь по связанной таблице отсортировать? Без проблем, там свой вложенный
orderByесть, копни документацию, не ленись. - Если нужно по куче полей сразу — пихай их все в массив, как в первом примере. Prisma сама разберётся.
- Эта фигня работает не только в
findMany, а почти везде, где ты данные достаёшь. Так что юзай смело.
Вот и вся наука. Не такой уж и пиздец, правда?