当前位置: 首页 > 知识库问答 >
问题:

发送突变时的GraphQLError

姜鸿
2023-03-14

尝试使用Apollo客户端时,我遇到以下语法错误

GraphQLError:语法错误:应为名称,找到$

我发送的查询是这样的

const CREATE_AUTHOR = gql`
  {
    mutation createAuthor($firstName: String, $lastName: String) {
      createAuthor(firstName: $firstName, lastName: $lastName) {
        firstName
        lastName
      }
    }
  }
`;

我在服务器上的类型定义如下

//...
  type Mutation {
    createAuthor(firstName: String! lastName: String!): Author
    updateAuthor(_id: String firstName: String lastName: String): Author
    deleteAuthor(_id: String): Author
  }

//...

我的问题是,我使用gql查看阿波罗文档的正确方法是什么

https://www.apollographql.com/docs/react/essentials/mutations.html#calling-mutations

我相信他们的示例与我的实现相匹配,否则我可能会误解其用法

const ADD_TODO = gql`
  mutation addTodo($type: String!) {
    addTodo(type: $type) {
      id
      type
    }
  }
`;

共有3个答案

夏侯兴学
2023-03-14

您可能需要向突变组件发送变量,例如:

<Mutation mutation ={CREATE_AUTHOR} variables={{"firstName": firstName, "lastName": lastName}}>

更新

虽然这并不是你想要的,但我现在是这样做阿波罗突变的。

属于React组件类的函数:

sendInstantMsg(createIM) {
    const textToSendElem = document.getElementById("textToSend");
    const textToSend = textToSendElem.value;

    const {toID} = this.props;
    const fromID = Meteor.userId();
    const msgText = trimInput(textToSend);

    createIM({
        variables: {
            "fromID": fromID,
            "toID": toID,
            "msgText": msgText
        },
        optimisticResponse: {
            __typename: 'Mutation',
            createIM: {
                __typename: 'instant_message',
                id: -1, 
                fromID: fromID,
                toID: toID,
                msgText: msgText,
                createdAt: +new Date
            },
        },
        update: (cache, {data: {createIM}}) => {
            let cacheData = cache.readQuery({query: GETIMS_QUERY, variables: {"fromID": fromID, "toID": toID}});
            let instant_message = cacheData.instant_message;
            if (!isDuplicateObject(createIM, instant_message)) {
                instant_message.push(createIM);

                cache.writeQuery({
                    query: GETIMS_QUERY,
                    data: {instant_message},
                    variables: {"fromID": fromID, "toID": toID}
                });
            }
            textToSendElem.value = "";
            scrollToBottomOfTextMsgs();
        }
    })
}

在渲染函数中:

<Mutation
    mutation={CREATE_IM_MUTATION}
>
    {(createIM, {data}) => (
        <RaisedButton
            id="sendMsgButton"
            label="SEND"
            style={styles.makeApptButton}
            secondary={true}
            onClick={() => this.sendInstantMsg(createIM)}
        />
    )}
</Mutation>
苏弘盛
2023-03-14

我想你这里缺少了一个逗号:<代码>变异createAuthor($firstName:String$lastName:String){code>

应该是变异createAuthor($firstName:String,$lastName:String){

宦琪
2023-03-14

我发现这很简单!不要用括号括住你的突变,它应该是这样的:

const CREATE_AUTHOR = gql`
  mutation createAuthor($firstName: String, $lastName: String) {
    createAuthor(firstName: $firstName, lastName: $lastName) {
      firstName
      lastName
    }
  }
`;
 类似资料:
  • 我试图让我的elm(v:0.18)客户机通过GraphQL与我的后端对话。我现在试图避免elm-graphql库和基本的elm HttpBuilder模块。 login命令如下所示:

  • 我正在尝试向使用Apollo的GraphQL服务器发送突变查询。 然而,我只看到实现这一点的唯一方法是使用突变组件。https://www.apollographql.com/docs/react/essentials/mutations/#the-突变成分 有没有一种简单的方法可以发送这样的突变? 从“graphql标记”导入gql;

  • 我发现了两种可能的方法来在Firebase实时数据库(例如在聊天应用程序中)发生更改后交付通知: > 如本博文所述,可以对Firebase使用云功能。 我在这里还发现了另一种更简单的方法,只使用一个监听数据库变化的android服务。 在尝试实施其中一种方法之前,我想知道这两种方法的利弊,因为第二种方法似乎比第一种方法简单得多。

  • 我目前使用vue-apollo包为Apollo客户机,使用VueJs堆栈,使用django和graphene-python为我的GraphQl API。 下面是vue-apollo的一个简单设置: 返回以下错误响应: 然而,在我的vue应用程序中,常规查询可以很好地解决正确的响应,除了突变,所以这让我真的很困惑

  • 问题内容: 首先,我认为我必须将JavaScript转换为PHP,但是后来我发现,由于服务器和客户端的执行,我不能。所以现在我只想发送一个变量 到一个PHP变量 假设我单击一个按钮,就会执行JavaScript中的该函数。 现在,我不知道如何将phpvariable分配给JavaScript,以便使用phpvariable在数据库中查找内容。我知道我可以将其添加到URL或其他内容中并刷新页面,但是

  • 支持跟踪对标量值的就地更改,这些更改将传播到所属父对象的ORM更改事件中。 建立标量列值的可变性 “可变”结构的一个典型例子是Python字典。遵循中介绍的示例 列和数据类型 ,我们从自定义类型开始,该类型在持久化之前将python字典封送到json字符串中: from sqlalchemy.types import TypeDecorator, VARCHAR import json clas