我正在使用 AWS AppSync 和 DynamoDB 构建带有 GraphQL 的 React 应用程序。我的用例是,我有一个数据表,该数据表是从 DynamoDB 表中提取并使用 GraphQL 显示给用户的。我有一些字段正在通过 AWS 上运行的分步函数进行更新。我需要为用户自动更新这些字段,就像 GraphQL 的订阅一样,但我发现订阅与突变相关,因此从步骤函数对数据库的更新不会触发前端的订阅更新。为了解决这个问题,我使用以下方法:
useEffect(() => {
setTimeout(getSubmissions, 5 * 1000)
})
显然,这是大量的过度获取,并且可能会产生不必要的费用。我一直在寻找更好的解决方案,并遇到了 DynamoDB 流,但如果 DynamoDB 流无法触发前端刷新组件,则它们无法帮助我。一定有比我想出的更好的解决方案。
谢谢!
最佳答案
您是对的,在 AWS AppSync 中,要触发订阅发布,您必须触发 GraphQL 突变。
but I found out that subscriptions are tied to mutations and thus an update to the database from step functions will not trigger a subscription update on the frontend.
如果您直接通过步骤函数或通过 DynamoDB 流更新 DynamoDB 表,则 AppSync 无法知道刷新的数据。 为什么不让步骤函数使用 AppSync 突变而不是直接更新表?这样,您就可以将订阅链接到突变,并让感兴趣的客户在数据刷新时获得推送的更新。
关于reactjs - 从 DynamoDB 更改 react 应用程序更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58774673/