Как получить массив в качестве члена входного параметра сервиса GraphQL? - PullRequest
0 голосов
/ 31 октября 2018

С учетом этой схемы:

input TodoInput {
  id: String
  title: String
}

input SaveInput {
  nodes: [TodoInput]
}

type SavePayload {
  message: String!
}

type Mutation {
  save(input: SaveInput): SavePayload
}

С учетом этого резольвера:

type TodoInput = {
  id: string | null,
  title: string
}

type SaveInput = {
  nodes: TodoInput[];
}

type SavePayload = {
  message: string;
}

export const resolver = {
  save: (input: SaveInput): SavePayload => {
    input.nodes.forEach(todo => api.saveTodo(todo as Todo));
    return { message : 'success' };
  }
}

Когда я отправил этот запрос:

mutation {
  save(input: {
    nodes: [
      {id: "1", title: "Todo 1"}
    ]
  }) {
    message
  }
}

Тогда значение для input.nodes будет undefined на стороне сервера.

Кто-нибудь знает, что я делаю не так?

Полезная информация:

  • Мутация корректно работает со скалярными значениями (такими как String в качестве входных и обратных)
  • Я использую машинопись, express и express-graphql.

1 Ответ

0 голосов
/ 31 октября 2018

Необходимо внести изменения в key в распознавателе,

export const resolver = {
  save: (args: {input: SaveInput}): SavePayload => {
    args.input.nodes.forEach(todo => api.saveTodo(todo as Todo));
    return { message : 'success' };
  }
}
...