【发布时间】:2021-04-15 23:20:12
【问题描述】:
我一直在尝试通过以下方式与 AppSync/GraphQL 交互:
- Lambda - 创建(工作)更新(不更改数据)
- Angular - 收到创建/更新订阅,但对象为空
- Angular - 欺骗更新(不更改数据)
- AppSync 控制台 - 欺骗更新(不更改数据)
帖子:
mutation MyMutation {
updateAsset(input: {
id: "b34d3aa3-fbc4-48b5-acba-xxxxxxxxxxx",
owner: "51b691a5-d088-4ac0-9f46-xxxxxxxxxxxx",
description: "AppSync"
}) {
id
owner
description
}
}
回复:
{
"data": {
"updateAsset": {
"id": "b34d3aa3-fbc4-48b5-acba-xxxxxxxxxx",
"owner": "51b691a5-d088-4ac0-9f46-xxxxxxxxxxx",
"description": "Edit Edit from AppSync"
}
}
每次我发送查询时,DynamoDB 中的版本都会自动递增。但描述与最初设置的相同。
架构上的身份验证规则 -
@auth(
rules: [
{ allow: public, provider: apiKey, operations: [create, update, read] },
{ allow: private, provider: userPools, operations: [read, create, update, delete] }
{ allow: groups, groups: ["admin"], operations: [read, create, update, delete] }
])
现在我在前端作弊,只是在收到空订阅事件后请求数据。但正如我所说,我似乎只能设置任何数据一次,然后我无法更新它。
任何见解都值得赞赏。
更新:我什至决定尝试使用 DeleteAsset 语句,它不会删除但会修改版本。
我想也许下一个理智的事情是要么站起来一个新的环境,要么尝试在一个新的帐户中站起来。
更新:我有一个工作理论,这与冲突检测/拒绝有关。当我尝试通过 AppSync 直接删除时,我遭到拒绝。从 Angular 中,我只取回记录而没有删除。
在 API 上添加额外的身份验证后,我记得它询问了冲突解决,我选择了“AutoMerge”。在https://docs.aws.amazon.com/appsync/latest/devguide/conflict-detection-and-sync.html
【问题讨论】:
标签: graphql amazon-dynamodb aws-appsync amplify