Отправлять данные на сервер Graphql с запросом-обещанием - PullRequest
0 голосов
/ 26 января 2020

Я использую библиотеку запрос-обещание , чтобы сделать http-запрос к серверу graphql. Чтобы выполнить запрос, я делаю это:

const query = `
    {
    user(id:"123173361311") {
      _id
      name
      email
    }
  }
`

const options = {
  uri: "http://localhost:5000/graphql",
  qs: { query },
  json: true
}

return await request(options)

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

// Input
{
   name: "lomse"
   email: "lomse@lomse.com"
}

const mutation = `
   mutation addUser($input: AddUserInput!){
      addUser(input: $input) {
          _id
          name
          email
      }
   }
`

const option = {
    uri: "http://localhost:5000/graphql",
    formData: {mutation},
    json: true,
    // how to pass the actual data input
}

request.post(option)

Или это запрос-обещание библиотека не предназначена для этого варианта использования?

Ответы [ 2 ]

1 голос
/ 26 января 2020

Используйте body, а не formData. Ваше тело должно состоять из трех свойств:

  • query: отправляемый вами документ GraphQL. Даже если операция является мутацией, свойство все равно называется запросом.
  • variables: Карта значений вашей переменной, сериализованная как объект JSON. Требуется только в том случае, если в вашей операции используются переменные.
  • operationName: указывает, какую операцию выполнять. Требуется только в том случае, если ваш документ содержит несколько операций.
request.post({
  uri : '...',
  json: true,
  body: {
    query: 'mutation { ... }',
    variables: {
      input: {
        name: '...',
        email: '...',
      },
    },
  },
})
0 голосов
/ 26 января 2020

Библиотека graphql-request , кажется, делает то, что мне нужно для библиотеки обещаний запроса.

import { request } from 'graphql-request'

const variables = {
   name: "lomse",
   email: "lomse@lomse.com"
}

const mutation = `
   mutation addUser($input: AddUserInput!){
      addUser(input: $input) {
          _id
          name
          email
      }
   }
`

response = await request(uri, mutation, {input: variables})
...