Мутации частичного обновления (GraphQL)

Как я могу обновить узел, изменив только одно поле, и оставить остальные поля в покое?

Мой Тип пользователя

type User {
        id: ID!
        user_id: String!
        username: String!
        email: String!
        role: Role!
        isVerified: Boolean!
    }

Мои типы ввода

input UserUpdateInput {
    user_id: String
    username: String
    email: String
    password: String
    role: Role
    isVerified: Boolean
    }
input UserWhereUniqueInput {
    id: ID
    user_id: String
    email: String
    }

Мой тип мутации

type Mutation {
        updateUser(data: UserUpdateInput!, where: UserWhereUniqueInput): User
    }

Мой резольвер

function updateUser(root, args, context, info){
    return context.db.mutation.updateUser({
      data: args.data,
      where: {
      id: args.where.id     
      }
    }, info)
  }

Это запрос, который я отправляю на игровой площадке GraphQL

mutation{
    updateUser(
    data: {
      isVerified: true
    }
    where:{
    user_id :  "afc485b"
        }
    )
  {
    isVerified
  }
}

Это ошибка, которую я получаю

{
  "errors": [
    {
      "message": "Cannot read property 'mutation' of undefined",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "updateUser"
      ],
      "extensions": {
        "code": "INTERNAL_SERVER_ERROR",
        "exception": {
          "stacktrace": [
            "TypeError: Cannot read property 'mutation' of undefined"

Кто-нибудь Помогите мне. Что мне не хватает? После обновления моего сервера, как было предложено Даниэлем Риарденом в разделе ответов, я получаю новую ошибку

    {
      "message": "Cannot read property 'updateUser' of undefined",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "updateUser"
      ],
      "extensions": {
        "code": "INTERNAL_SERVER_ERROR",
        "exception": {
          "stacktrace": [
            "TypeError: Cannot read property 'updateUser' of undefined"

person Kinara Nyakaru    schedule 14.02.2020    source источник


Ответы (1)


Ошибка является результатом неправильного добавления свойства db в ваш контекст. Предполагая, что вы все еще используете версию 1, ваш код должен выглядеть примерно так:

const { prisma } = require('./generated/prisma-client')

const server = new ApolloServer({
  ...
  context: {
    db: prisma,
  },
})
person Daniel Rearden    schedule 14.02.2020
comment
Я обновил вопрос с новой ошибкой, которую я получаю после обновления моего сервера, как вы предложили - person Kinara Nyakaru; 14.02.2020
comment
Разве это не должно быть просто context.db.updateUser, как показано в документах? Откуда ты mutation? - person Daniel Rearden; 14.02.2020