首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GraphQL -语法错误GraphQL请求(5:15)预期名称

GraphQL -语法错误GraphQL请求(5:15)预期名称
EN

Stack Overflow用户
提问于 2017-07-16 15:39:28
回答 1查看 4K关注 0票数 2

我正在尝试实现一个graphQL API,它适用于查询,但并不能很好地实现突变:

下面是我使用apollo-clientgraphql-tag进行的基本突变:

代码语言:javascript
复制
import gql from 'graphql-tag'
const addNewPlace = (place) => {
    return client.mutate({
        mutation: gql`
        mutation {
          addNewPlace(
          input: {
            $title: String!
          }
          ) {
            place { title }
          }
        }
        `,
        variables: {
          title: place.title
        }
      })
  }

这里我试着用变量。当改变突变看起来像下面的那个,它是顺利地进行,然而,它不是正确的方式去做id。

代码语言:javascript
复制
const addNewPlace = (place) => {
    return client.mutate({
        mutation: gql`
        mutation {
          addNewPlace(
          input: {
            title: "${place.title}"
          }
          ) {
            place { title }
          }
        }
        `
    })
}

知道我在哪里犯的错吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-16 18:10:30

在使用变量时,需要执行三个步骤:

  1. 将变量添加到正在发送的请求中。在阿波罗中,它通过在传递给variables的对象中指定一个mutate属性来完成。你写道: 变量:{ title: place.title } 这很好。我们将一些名为title的变量连同请求一起发送到我们的服务器。此时,GraphQL甚至不知道变量。
  2. 在操作中声明变量。您不需要命名您的操作,但这样做是很好的做法: 突变AddNewPlace($title: String) { 这里,我们告诉GraphQL我们包含了一个名为title的变量。只要它与#1中传递给变量支柱的内容匹配,就可以将它称为任何东西(例如foo)。这一步很重要,因为A) GraphQL需要知道变量的情况,B)它需要知道您要传入的变量的类型。
  3. 最后,将变量包含在您的变异中,如下所示: addNewPlace(输入:{ title:$title }) {

请注意,不要将步骤2中的变量定义与步骤3中的输入定义混为一谈。另外,我假设您的typeDefs包含某种input类型,如AddNewPlaceInput。您可以传递这样的对象,而不仅仅是传递标题:

代码语言:javascript
复制
variables: { input: { title: place.title } }

那么你的突变看起来是这样的:

代码语言:javascript
复制
mutation AddNewPlace($input: AddNewPlaceInput) {
  addNewPlace(input: $input) {
    # fields returned by the mutation

我强烈推荐启用一个端点的,这样在客户端实现查询和突变之前,您可以很容易地测试它们。

最后,您可能需要检查并确保您在突变中要求的字段与您的类型定义相匹配。我只是在这里猜测,但是如果您的突变决定为Place类型,那么您就不需要将place { title }放在title中,除非您的Place类型实际上有一个place字段。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45130386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档