В чем разница между массивом и объектом

Ответ

Для сортировки в 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 }
});

Примечания:

  1. Можно сортировать по связанным моделям через вложенный orderBy
  2. Для сложных сортировок используйте orderBy с несколькими полями
  3. Работает с 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 на десять экранов.

На заметку, чтобы не облажаться:

  1. Хочешь по связанной таблице отсортировать? Без проблем, там свой вложенный orderBy есть, копни документацию, не ленись.
  2. Если нужно по куче полей сразу — пихай их все в массив, как в первом примере. Prisma сама разберётся.
  3. Эта фигня работает не только в findMany, а почти везде, где ты данные достаёшь. Так что юзай смело.

Вот и вся наука. Не такой уж и пиздец, правда?