Ian*_*rko 4 javascript amazon-dynamodb aws-appsync
我想要做的是通过 AppSync 从 React Native 应用程序发送数据,以便我可以更新 dynamo 表上的用户数据。我可以执行我所有的 CRUD 操作,而不是数据列表。当我尝试时,我收到一个错误,指出我发送的不是有效的 JSON。但是,当我将输入通过 JSON linter 时,我的输入将作为有效的 JSON 传递。
为了尝试解决这个问题,我已将输入流程更改为最简单的流程。最初我是从本地缓存的解析 JSON 字符串中提取我的 JSON。我认为 JSON.parse(obj) 函数可能存在问题。那是站不住脚的。因此,我将所有输入从 JS 对象移到了一个 JSON 中,该 JSON 未预先存储在变量中,而是直接传递给我正在使用的 API(https://aws-amplify.github.io/docs /js/api)。
在这不起作用之后,我想也许我的 GraphQL Schema 对于我发送的对象类型是错误的,但没有发现任何问题。
我在 AppSync 中使用 GraphQL 的架构定义如下:
input CreateUserInput {
email: String!
data: AWSJSON
}
Run Code Online (Sandbox Code Playgroud)
我发送的请求如下:
const dbReturn = await API.graphql(graphqlOperation(
mutations.createUser, {
input: {
"email": "fake.email@atdot.com",
"data": [{
"num": 34,
}]
}
}
));
Run Code Online (Sandbox Code Playgroud)
错误消息说:
“变量‘数据’的值无效。无法将 [{num=34}] 解析为有效的 JSON。”
令我困惑的是,这"[{num=34}]"不是我给它的输入。我正在发送它"[{"num": 34}]"是有效的 JSON。我希望它能够解析我的输入并将数据发送到我的发电机表,因为 JSON 输入是有效的。
任何人都知道我能做些什么来克服这个问题?感谢您的帮助!
弄清楚了。答案在于 GraphQL 模式。
"createUser": {
"email": "Hello, world!",
"data": "{\"key\":\"value\"}",
}
Run Code Online (Sandbox Code Playgroud)
“复杂数据类型”的输入只是一个字符串。因此,在发出请求时,您只需将数据作为类似JSON.stringify(variable.data). 我希望这对一路上的人有所帮助。
| 归档时间: |
|
| 查看次数: |
3675 次 |
| 最近记录: |