Запрос для получения данных, упорядоченных по количеству элементов в отношении

Допустим, у меня есть типичная модель данных, которая использовалась во многих уроках:

type User {
  id: ID! @unique
  name: String!
  posts: [Post!]!
}

type Post {
  id: ID! @unique
  title: String!
  content: String!
  published: Boolean! @default(value: "false")
  author: User!
}

Можно ли создать запрос, чтобы получить список, скажем, 10 пользователей с большим количеством сообщений? В основном мне нужно запросить порядок по "количеству" постов… но я не нашел способа сделать это

Любая помощь будет высоко оценена

ура

1 ответ

Как сказал @shivam-panday в комментарии, в настоящее время это не реализовано в Prisma (см. Выпуск: https://github.com/prisma/prisma/issues/95).

Этот комментарий особенно объясняет вашу проблему:

Было бы замечательно иметь возможность упорядочить также по "многим" связанным полям (по количеству связанных элементов).

Например, чтобы получить список 10 самых популярных ссылок (при условии, что голоса являются связанным полем типа [Голосовать!]!):

query {
  allLinks(first: 10, orderBy: votes_DESC) {
    id
    url
    description
    _votesMeta {
      count
    }
  }
}

В настоящее время, чтобы получить этот список, вам нужно будет запросить каждую ссылку, а затем отсортировать / нарезать ее на клиенте, что может привести к чрезмерной загрузке.

Комментарий в вопросе: https://github.com/prisma/prisma/issues/95

Я сталкивался с той же проблемой с Призмой, и это серьезная проблема. Извлечение всех пользователей со всеми их сообщениями и сортировка по количеству их сообщений не является практическим решением.

Обходной путь, который я могу придумать, - это отслеживать количество постов (каждый раз при добавлении / удалении) и сохранять их в User.

type User {
  id: ID! @unique
  name: String!
  postsCount: Int!
  posts: [Post!]!
}

Таким образом, Prisma представит параметры сортировки для postsCount.

Я не уверен, что Prisma 2 предлагает правильное решение этой проблемы... Кто-нибудь знает?

Другие вопросы по тегам