Не удается запросить поле «пароль» для типа «Пользователь» graphql - PullRequest
1 голос
/ 23 мая 2019

Я использую graphql и prisma.

datamodel.prisma

type User {
  id: ID! @id
  createdAt: DateTime! @createdAt
  updatedAt: DateTime! @updatedAt
  email: String! @unique
  password: String!
  first_name: String
}

schema.graphql

scalar Date

type Query {
  users: [User!]!
}

type User {
  id: ID!
  createdAt: Date!
  updatedAt: Date!
  email: String!
  first_name: String
}

resolver

users: (parent, args, context) => {
  return context.prisma.users();
}

Я ожидал получить список пользователей, но получил ошибку: запрос

{
  users {
    email
  }
}

ошибка

"Cannot query field 'password' on type 'User'. (line 7, column 5):\n password\n ^"

enter image description here

ОБНОВЛЕНИЕ 1 Пытался использовать фрагмент, нополучил то же самое:

{
  users {
    ...userFields
  }
}

fragment userFields on User {
  email
}

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Я создал пользовательский запрос, который возвращает фрагмент и, похоже, ошибка исчезла.

0 голосов
/ 23 мая 2019

... ааа Призма ...

Я не знаю, поддерживаются ли интерфейсы, объединения или типы ввода. Graphql документы

Prisma генерирует почти все ... но определение пароля по мере необходимости (как тип для генерации DBB) для модели данных не должно блокировать запросы для подмножества типа или типа, определенного в существующей модели, без использования всех полей.

Для меня это немного ошибочное сообщение об ошибке. Это может быть связано с решателем.

Попробуйте match типы в преобразователе, не возвращайте прямой призменный запрос (работает с типами моделей), но сопоставьте запрашиваемые данные (массив), чтобы отфильтровать поле / свойство пароля (для совместимости с типом запроса). Это также проблема безопасности - пароли нельзя читать извне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...