使用 Apollo 客户端运行 GraphQL Mutation

Posted

技术标签:

【中文标题】使用 Apollo 客户端运行 GraphQL Mutation【英文标题】:Run GraphQL Mutation using Apollo Client 【发布时间】:2021-05-30 00:59:24 【问题描述】:

所以我有这个允许用户创建帐户的 GraphQL Mutation:

mutation 
  register(input: 
    email: "bob@gmail.com"
    password: "bob123"
  ) 
    user 
      id
      email
    
    errors 
      path
      message
    
  

我想使用 Apollo 客户端运行这个突变(注意:我使用的是 TypeScript)

const REGISTER: DocumentNode = gql`
mutation Register($type: String!) 
  register(input: 
    email: $type
    password: $type
  ) 
    email
    id
  

`
<form onSubmit=(e: React.FormEvent<htmlFormElement>) => 
    e.preventDefault()
    register( variables:  input: email: emailValue, password: passwordValue  )
>

我一直遇到这个错误:

任何帮助将不胜感激! 提前致谢!

【问题讨论】:

传递的变量 (input) 与查询/突变 (type) 中定义的不同 - 阅读文档 graphql.org/learn/queries/#variables ... 并使用“查询变量”在操场上测试突变 谢谢我已经弄明白了。 【参考方案1】:

更新:我通过这样做修复了它:

// GraphQL Mutation to register an account
const REGISTER: DocumentNode = gql`
mutation register($email: String!, $password: String!) 
  register(input: 
    email: $email
    password: $password
  ) 
    user 
      email
      id
    
    errors 
      path
      message
    
  

`

【讨论】:

通常更短[更好]的是使用$input: someInputType变量(从API读取类型)并将其传递给register(input: $input)查询

以上是关于使用 Apollo 客户端运行 GraphQL Mutation的主要内容,如果未能解决你的问题,请参考以下文章

Apollo+React:如何使用代理使客户端和 graphql 在同一个域上?

Apollo Java GraphQL 客户端:generateApolloSources 失败

Apollo GraphQL - 如何将 RxJS 主题用作 Apollo 客户端的变量?

使用 graphql 和 apollo 客户端刷新 Angular 令牌

ReactJS + Apollo 客户端 CORS 问题

使用替代 GraphQL 客户端连接到 Apollo Server