Ошибка выброса мутации GraphQL

Обновлять

Я сузился до того, где возникает ошибка, и, похоже, это проблема Prisma.

Ошибка возникает здесь в функции голосования:

const linkExists = await context.db.exists.Vote({
    user: { id: userId },
    link: { id: args.linkId }
})

Оригинал

Пробиваюсь через этот учебник.

Я пытаюсь проголосовать за сообщение, но выдает следующую ошибку:

{
  "data": {
    "vote": null
  },
  "errors": [
    {
      "message": "Variable '$_v0_where' cannot be non input type 'VoteWhereInput'. 
                  (line 1, column 20):\nquery ($_v0_where: VoteWhereInput) 
                  {\n                   ^",
      "locations": [],
      "path": [
        "votes"
      ]
    }
  ]
}

Я отправляю следующую мутацию:

mutation{
  vote(linkId:"cjit726cxfkpj0a21z74nuncu"){
    id
  }
}

Не совсем уверен, что означает эта ошибка. Я сравнивал свой код с официальное репо на Github, но не могу найти разницы.

Вот моя функция голосования:

async function vote(parent, args, context, info) {
  const userId = getUserId(context)
  const linkExists = await context.db.exists.Vote({
    user: { id: userId },
    link: { id: args.linkId },
  })
  if (linkExists) {
    throw new Error(`Already voted for link: ${args.linkId}`)
  }

  return context.db.mutation.createVote(
    {
      data: {
        user: { connect: { id: userId } },
        link: { connect: { id: args.linkId } },
      },
    },
    info,
  )
}

Когда я выхожу из системы args, он показывает:

query:
query ($_v0_where: VoteWhereInput) {
  votes(where: $_v0_where) {
    id
  }
}
operationName: null
variables:
{
  "_v0_where": {
    "link": {
      "id": "cjit5v46i2r3y0a21a7ez0t9p"
    },
    "user": {
      "id": "cjis44x27gbn60a219abasvjz"
    }
  }
}

Я создал нового пользователя, создал сообщение с этим пользователем (оба работают нормально), но когда я пытаюсь проголосовать от имени этого пользователя, я застреваю здесь.

Мой datamodel.schema, если хотите:

type Link {
  id: ID! @unique
  description: String!
  url: String!
  postedBy: User
  votes: [Vote!]!
}

type User {
  id: ID! @unique
  name: String!
  email: String! @unique
  password: String!
  links: [Link!]!
  votes: [Vote!]!
}

type Vote {
  id: ID! @unique
  link: Link!  
  user: User!
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
282
1

Ответы 1

Это связано с тем, что структура db.exists требует отправки аргументов, заключенных в поле where.

Похоже, что документы устарели, тоже получат они обновлены.

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