2

鉴于此架构:

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.nodesundefined在服务器端。

有人知道我在做什么错吗?

有用信息:

  • 突变适用于标量值(例如作为输入和返回的字符串)
  • 我正在使用 typescript、express 和 express-graphql。
4

1 回答 1

3

您需要key在解析器中进行更改,

export const resolver = {
  save: (args: {input: SaveInput}): SavePayload => {
    args.input.nodes.forEach(todo => api.saveTodo(todo as Todo));
    return { message : 'success' };
  }
}
于 2018-10-31T06:07:29.777 回答