Запрос для получения данных, упорядоченных по количеству элементов в отношении - PullRequest
0 голосов
/ 05 декабря 2018

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

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 пользователей с большим количеством сообщений??В основном мне нужно запросить заказ по «количеству» сообщений… но я не нашел способа сделать это

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

Приветствия

Ответы [ 2 ]

0 голосов
/ 27 августа 2019

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

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

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

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

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

0 голосов
/ 05 декабря 2018

Как сказал @ 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#issuecomment-320433296

...