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

时间:2018-12-11 11:33:43

标签: react-native amazon-dynamodb graphql aws-appsync aws-amplify

将此查询运行到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所示):

enter image description here

1 个答案:

答案 0 :(得分:0)

我知道,上面的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
        }
}`;

其他人对我来说都一样。