当数据库发生变化时,aws-amplify可以向react-native发送事件吗?



是否可以从React Native中侦听Dynamo db中的db变化?

目标是在数据库发生变化时自动更新React Native中的值。

Amplify支持它,但只有当更改的来源是通过graphql api(来自react native应用程序的另一个用户)完成时才有可能,而如果数据库中的更改来自其他地方(例如lambda函数)则不可能。这是因为在aws amplify中,推送更改消息的是aws AppSync。

如果更改的来源是来自其他地方,你需要手动配置一个lambda函数并将其作为触发器附加到dynamodb(这可能是通过amplify cli实现的,但我从来没有这样做过,所以我不确定),并使lambda函数例如发送websocket/mqtt消息到你的应用程序。但这是很多手动编码和配置。

如果来源来自你的应用程序的用户,通过graphql api, amplify为你提供了一个开箱即用的订阅可能性。我使用angular,当我使用amplify时,我得到一个名为API.service.ts的文件(不确定react native是否也一样)。在该文件中有一个可观察对象,例如OnCreateTodoListener.

你可以使用那个可观察对象来订阅创建事件。或类似OnUpdateTodoListener

graphql查询看起来像这样(angular的typescript版本):

OnUpdateTodoListener: Observable<
SubscriptionResponse<OnUpdateTodoSubscription>
> = API.graphql({
query:
`subscription OnUpdateTodo {
onUpdateTodo {
__typename
id
}
}`
}
) as Observable<SubscriptionResponse<OnUpdateTodoSubscription>>;

这些侦听器应该已经可用,除非您手动配置了graphql模式模型以不允许订阅。

查看文档获取更多详细信息

最新更新