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 appsync 中的 Graphql 突变错误
AWS Amplify + Graphql + Dynamodb:突变时出现 ConditionalCheckFailedException 错误