AWS Amplify 突变调用返回“UnknownArgument 类型的验证错误:未知字段参数”

Posted

技术标签:

【中文标题】AWS Amplify 突变调用返回“UnknownArgument 类型的验证错误:未知字段参数”【英文标题】:AWS Amplify mutation call returns "Validation error of type UnknownArgument: Unknown field argument" 【发布时间】:2019-05-12 09:27:28 【问题描述】:

当将此查询运行到 Amplify 控制台时,效果很好 - 所以我假设架构和数据库设置正确:

mutation CreateUser 
  createUser(input: 
    name: "Nader Dabit"
    email: "naderdabit@site.com"
    image: "someimagepath"
    mobile: 122122
  ) 
    id
    name
    email
    image
    mobile
  

在我的 RN 应用程序中,我以以下方式配置了 AWS Amplify(但我不确定这是否应该是这样,但登录/注册等过程似乎工作正常):

Amplify.configure(Auth: apiKeyStore, aws_appsync_graphqlEndpoint: "https://xxx.appsync-api.ap-xxx-1.amazonaws.com/graphql",
        aws_appsync_region: "ap-xxx-1", aws_appsync_authenticationType: "API_KEY", aws_appsync_apiKey: "da2-xxxx");

因此我有以下代码来调用 mutation 方法:

const CreateUser = `mutation CreateUser(
    $name: String!,
    $email: String!,
    $mobile: Int!,
    $image: String!
  ) 
        createUser(name:$name, email:$email, mobile:$mobile, image:$image)
        
            id
            name
            email
            mobile
            image
        
`;

// inside a method
try 

   const newUser = await API.graphql(graphqlOperation(CreateUser, name: name, email: email, mobile: mobile, image: image));
   console.log('newUserIncoming: ', newUser);

catch (err) 

   console.log('error while create user: ', err);

但上面的调用总是转向错误/捕获,并带有以下错误对象(如 React Native Debugger 所示):

【问题讨论】:

【参考方案1】:

我明白了,可能上面的 GraphQL 上下文有点老了。查看https://aws-amplify.github.io/docs/js/react 托管的当前文档,我发现它需要一些调整。这样做之后,我能够返回正数并能够将值存储到数据库。

以下是我最新的查询格式(如果对像我这样的人有帮助,请注意现在删除了逗号用法,并添加了一个新标签 input):

const CreateUser = `mutation CreateUser(
    $name: String!
    $email: String!
    $mobile: Int!
    $image: String!
  ) 
        createUser(input:name:$name email:$email mobile:$mobile image:$image)
        
            id
            name
            email
            mobile
            image
        
`;

休息对我来说保持不变。

【讨论】:

以上是关于AWS Amplify 突变调用返回“UnknownArgument 类型的验证错误:未知字段参数”的主要内容,如果未能解决你的问题,请参考以下文章

使用 AWS Amplify/AppSync 的嵌套 GraphQL 突变

Aws Amplify:部分更新(突变)

aws amplify appsync 中的 Graphql 突变错误

AWS Amplify + Graphql + Dynamodb:突变时出现 ConditionalCheckFailedException 错误

在反应本机应用程序中使用 AWS Amplify 在 GraphQL 突变中出错

发布 AWS Amplify GraphQL 突变时如何避免在数组中创建重复项