Неопределенные аргументы на мутацию, используя apollo-сервер - PullRequest
0 голосов
/ 15 мая 2019

Я работаю с сервером apollo, все работает как ожидалось, но аргументы мутации не определены, когда мутация вызывается из внешнего интерфейса.

const express = require('express');
const morgan = require('morgan');
const { ApolloServer, gql } = require('apollo-server-express');
const mongoose = require('mongoose');
require('dotenv').config();

const app = express();

const typeDefs = gql`
  type msgFields {
    email: String!
    textarea: String!
    createdAt: String!
  }

  input MsgFieldsInput {
    email: String!
    textarea: String!
    createdAt: String!
  }

  type Query {
    formContact: msgFields!
  }

  type Mutation {
    createMsg(email: String!, textarea: String!, createdAt: String!): String!
  }

`;

const resolvers = {
  Query: {
    formContact: () => {
      return {
        email: 'test@mail.com',
        textarea: 'checking Checking checking Checking checking Checking'
      }   
    }
  },
  Mutation: {
    createMsg: (args) => {
      console.log(args); // => undefined here
      return 'Worked';
    }
  }
}

const server = new ApolloServer({
  typeDefs,
  resolvers
});


app.use(morgan('dev'));

server.applyMiddleware({app})

mongoose.connect(process.env.MONGO_URL, { useNewUrlParser: true })
  .then(() => {
    app.listen({port: 4000}, () => {
      console.log(`Server and DB ready at http://localhost:4000${server.graphqlPath}`)
    });
  })
  .catch(err => {
    throw err;
  })

Это то, что я посылаю из / graphql mutation {createMsg (электронная почта: "test@mail.com" textarea: "тестирование textarea" созданAt: "19-05-2018")}

1 Ответ

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

Подпись резольвера выглядит следующим образом: (parent, args, context, info) где:

  • parent: Объект, содержащий результат, возвращенный из резольвера в родительском поле, или, в случаеполе Query верхнего уровня, rootValue, переданное из конфигурации сервера.Этот аргумент разрешает вложенную природу запросов GraphQL.
  • args: объект с аргументами, передаваемыми в поле в запросе.Например, если поле было вызвано с запросом {ключ (arg: «вы имели в виду»)}, объект args будет: {«arg»: «вы имели в виду»}.
  • context: ЭтоОбъект используется всеми распознавателями в конкретном запросе и используется для хранения состояния каждого запроса, включая информацию об аутентификации, экземпляры загрузчика данных и все остальное, что следует учитывать при разрешении запроса.Прочтите этот раздел, чтобы узнать, когда и как использовать контекст.
  • info: Этот аргумент содержит информацию о состоянии выполнения запроса, включая имя поля, путь к полю из корня и многое другое.Он задокументирован только в исходном коде GraphQL.js, но расширен дополнительными функциональными возможностями другими модулями, такими как apollo-cache-control.

Аргументы передаются в преобразователь как второй параметр, а не первый .См. документы для получения дополнительной информации.

...