将此查询运行到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所示):
答案 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
}
}`;
其他人对我来说都一样。