node.js - 如何接收数组作为 GraphQL 服务的输入参数的成员?

标签 node.js express graphql express-graphql

鉴于此架构:

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 的值在服务器端是未定义

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

有用信息:

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

最佳答案

您需要更改解析器中的key

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

关于node.js - 如何接收数组作为 GraphQL 服务的输入参数的成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53077013/

相关文章:

javascript - AngularJS, ng-view + css3 keyframes with jade template - ng-cloak 不工作

javascript - Jade 模板不维护嵌套

reactjs - Apollo boost - 查询中的 __typename 防止新突变

javascript - 对 8 位 PCM 信号进行 FFT

mysql - Mocha 测试与数据库的连接

elasticsearch - 使用 Elasticsearch 时查询响应大小是否有限制?

javascript - React、Apollo 2、GraphQL、身份验证。如何在登录后重新渲染组件

node.js - 如何使用消息队列来寻址特定的客户端/用户?

javascript - 不安全异步函数的 API 设计

node.js - 将 expressjs 与 esbuild bundle 在一起会给出缺少 view.js 的警告