Ошибка graphql: мутация, где не работает

Я использую Prisma GraphqQL, и у меня возникла эта ошибка из-за мутации с селектором where: «Вы указали недопустимый аргумент для селектора where для пользователя»

Мутация:

mutation UpdateUserMutation($data: UserUpdateInput!, $where: UserWhereUniqueInput!) {
  updateUser(data: $data, where: $where) {
    id
    name
    email
    role
  }
}

Переменные:

{
  "data": {
    "name": "alan", "email": "[email protected]", "role": "ADMIN"
  },
  "where": {
    "id": "cjfsvcaaf00an08162sacx43i"
  }
}

Результат:

{
  "data": {
    "updateUser": null
  },
  "errors": [
    {
      "message": "You provided an invalid argument for the where selector on User.",
      "locations": [],
      "path": [
        "updateUser"
      ],
      "code": 3040,
      "requestId": "api:api:cjftyj8ov00gi0816o4vvgpm5"
    }
  ]
}

Схема:

updateUser(
  data: UserUpdateInput!
  where: UserWhereUniqueInput!
): User


type UserWhereUniqueInput {
  id: ID
  resetPasswordToken: String
  email: String
}

Почему эта мутация не работает?

С цветами: График мутацийQL  Mutation GraphQL Схема Graphql  Schema Graphql


ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

Полный код этого проекта находится здесь:

Площадка Graphql находится здесь:

Представление консоли (переменные пустые):  вид консоли (переменные пустые):

Запрос для пользователя (с идентификатором: cjfsvcaaf00an08162sacx43i). Таким образом, пользователь может быть найден с помощью оператора «где» в запросе, но не в мутации. введите здесь описание изображения


person Alan    schedule 10.04.2018    source источник


Ответы (1)


Ваш преобразователь updateUser не реализован правильно:

async function updateUser(parent, { id, name, email, role }, ctx, info) {
   // console.log( id, name, email)
  await ctx.db.mutation.updateUser({
    where: { id: id },
    data: {name: name, email: email, role: role},
  })
}

Ваша мутация имеет два параметра: data и where, но вы ожидаете список параметров {id, name, email, role}.

Либо обновите свою схему, либо соответственно свой преобразователь.

Источник: https://github.com/graphcool/prisma/issues/2211.

person Alan    schedule 13.04.2018
comment
Вы можете отметить свой ответ как решение вопроса :) - person marktani; 20.04.2018
comment
Да :) Я сделаю это! - person Alan; 21.04.2018