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

使用GQLObject作为突变的arg?

夹谷志
2023-03-14
mutationA: {
      type: MutationResponseType,
      args: {
        id: {
          type: new GraphQLNonNull(GraphQLString)
        },
        name: {
          type: new GraphQLNonNull(GraphQLString)
        },
        requiredData: {
          type: new GraphQLNonNull(new GraphQLList(RequiredDataType))
        }
      },
      async resolve(parentValue, {
        id,
        name,
        requiredData
      }, req) {
         // Some Magic Code
      }
    },
const RequiredDataType = new GraphQLObjectType({
  name: 'RequiredDataType',
  fields: {
    name: {
      type: GraphQLString
    },
    value: {
      type: GraphQLString
    },
    required: {
      type: GraphQLBoolean
    }
  }
});
module.exports = RequiredDataType;

当我使用这段代码时,我得到以下错误:“模块初始化错误:错误”

如果我将突变中的RequiredDataType更改为GraphQLString,它将不会出错,但我不能使用我需要的对象:)

最后,我将发送并处理以下数据结构:

{
"name": "Hallo"
"id": "a54de3d0-a0a6-11e7-bf70-7b64ae72d2b6",
 "requiredData": [
 {
 "name": "givenName",
 "value": null,
 "required": true
 },
 {
 "name": "familyName",
 "value": null,
 "required": false
 }
 ]
}
export default gql`
  mutation MutationA($id: String!, $name: String!, $requiredData: [RequiredDataType]!){
    mutationA(id: $id, name: $name, requiredData: $requiredData) {
          id,
          somethingElse
      }
    }
`;

法比安

共有1个答案

步致远
2023-03-14

不幸的是,类型不能代替输入,输入也不能代替类型。这是设计好的。来自官方规范:

字段可以定义客户端随查询传递的参数,以配置它们的行为。这些输入可以是字符串或枚举,但有时需要比这更复杂。

上面定义的对象类型不适合在这里重用,因为对象可以包含表示循环引用或对接口和联合的引用的字段,这两者都不适合用作输入参数。由于这个原因,输入对象在系统中有一个单独的类型。

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

  • 我的变异查询: 查询变量: GraphQL模式(突变定义): 我尝试同时使用GraphiQL接口和apollo-client来发送带有变量的请求,但出现了相同的错误。有什么想法吗?

  • 我使用的是Android系统的图形ql阿波罗客户端。我能够使用单个字段的突变传递数据,没有任何问题。在突变中使用输入对象时,出现了无法读取未定义的电子邮件属性的错误。但是在浏览器中运行时,同样的图形ql工作。 Graphql突变 输入 API调用的Java代码

  • 我有这样的调查数据。唯一的回答是“na”或“yes”。 我不得不对数据应用以下逻辑: null null 任何建议都非常感谢!我想我可能得用一个循环,但我不知道怎么用。如果我转换为数值并将所有4列求和,我可以使用类似…?

  • 我使用的是Prisma GraphqQL,我在where选择器中发现了一个突变:“您为User上的where选择器提供了一个无效的参数” 突变: 变量: 结果: 架构: 为什么这种突变不起作用? 额外信息 这个项目的完整代码在这里: Graphql游乐场在这里:

  • 我得到这个错误,而试图改变阿波罗本地状态。 错误不变冲突:应为已解析的GraphQL文档。也许您需要将查询字符串包装在“gql”标记中?http://docs.apollostack.com/apollo-client/core.html#gql 初始状态 我的突变 我的解析器 我想改变按键的局部状态,功能是 生成数据功能如下 我是阿波罗客户的新手。我不明白我做错了什么。有人能帮我解决这个问题吗?