首页 > 解决方案 > PostGraphile 订阅 - “主题”指的是什么?

问题描述

我正在使用 PgPubsub,我正试图让我的头脑四处走动listentopic*:""看看放在那里的东西。

例如,假设我有一个<PostList>呈现列表的组件,<Post>并且我想在创建或删除 Post 时更新列表。

我不确定如何构建我的订阅,所以我正在监听 PostList 的更改。这是我的 GraphiQL 的屏幕截图:

在此处输入图像描述

标签: graphqlrelaypostgraphile

解决方案


pubsub(发布-订阅)中,消息被发布到一个“主题”,您可以订阅该主题以接收在那里发布的消息。

您似乎正在使用 PostGraphile 中的“简单订阅”功能,所以我会假设是这种情况来回答。

使用您拥有的订阅listen(topic: "whatGoesHere?"),您需要向postgraphile:whatGoesHere?主题广播以触发订阅事件。您可以通过发出 SQL 语句来做到这一点NOTIFY "postgraphile:whatGoesHere?", '{"ok": true}';。你可以这样做psql

$ psql your_database_here
[your_database_here] # NOTIFY "postgraphile:whatGoesHere?", '{"ok": true}';
NOTIFY
[your_database_here] # 

假设您的 GraphQL 订阅正在运行,这应该会导致评估选择集并将结果发送到 GraphiQL。

您可能希望NOTIFY从函数或触发器中触发此语句;您可以在PostGraphile 订阅文档中阅读更多相关信息。


推荐阅读