【问题标题】:Submit graphql mutation containing nested array of object playload with "aws-amplify"使用“aws-amplify”提交包含嵌套对象播放负载数组的 graphql 突变
【发布时间】:2020-06-16 17:38:01
【问题描述】:

我尝试使用aws-amplify 提交以下有效负载(嵌套的对象数组):

{
  "data": [
    { "name": "alpha", "description": "lorem" },
    { "name": "bravo", "description": "ipsum" },
  ]
}

这个解决方案(源代码是TypeScript):

import AWSAmplifyAPI, { graphqlOperation } from "@aws-amplify/api";


const rawGraphQLRequest: string = `
  mutation ($data: [registerMultipleItemsInput]!) {
    registerMultipleItems(data: [$data])
  }`;

type Item = {
  name: string;
  description: string;
}

async function registerMultipleItems(items: Array<Item>): Promise<void> {
  await AWSAmplifyAPI.graphql(graphqlOperation(rawGraphQLRequest, { data: items }));
}

导致不清楚的错误:

Validation error of type VariableTypeMismatch: Variable type '[registerMultipleItemsInput]!' doesn't match expected 
type 'registerMultipleItemsInput' @ 'registerMultipleItems'";

是后端,方案定义为:

registerMultipleItems(data: [registerMultipleItemsInput]!): [String]!
    @aws_cognito_user_pools

input registerMultipleItemsInput{
  name: String!
  description: String!
}

我尝试将registerMultipleItemsInput 定义添加到rawGraphQLRequest

const rawGraphQLRequest: string = `

  input registerMultipleItemsInput {
    name: String!
    description: String!
  }

  mutation ($data: [registerMultipleItemsInput]!) {
    registerMultipleItems(data: [$data])
  }`;

上面的错误离开了,并且发生了额外的错误:

Validation error of type NonExecutableDefinition: The registerMultipleItemsInput definition is not executable.

{ "data": &lt;Array&gt; } 有效载荷的正确语法是什么?

P。 S. 我希望我不需要在rawGraphQLRequest 中定义registerMultipleItemsInput,因为registerMultipleItemsInput 已经在后端定义并且在前端再次定义它是某种硬编码。

【问题讨论】:

    标签: javascript graphql aws-amplify


    【解决方案1】:

    我认为您的第一个解决方案是正确的,除了:

    mutation ($data: [registerMultipleItemsInput]!) {
        registerMultipleItems(data: [$data]) // <-------- incorrect
    }`;
    

    $data 已经包含 registerMultipleItemsInput 的数组,但您将其包装在另一个不正确的数组中,它必须是:

    mutation ($data: [registerMultipleItemsInput]!) {
        registerMultipleItems(data: $data) // <-------- correct
    }`;
    

    【讨论】:

      猜你喜欢
      • 2021-04-24
      • 1970-01-01
      • 2020-04-05
      • 2021-05-08
      • 2021-05-30
      • 2023-03-19
      • 2020-08-12
      • 2020-11-23
      • 2018-01-02
      相关资源
      最近更新 更多