PostGraphile 订阅 - “主题”指的是什么?

问题描述

我正在使用 PgPubsub 并且我正在尝试了解 listentopic*:"" 与放置在那里的内容

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

我不知道如何组织我的订阅,所以我正在监听 PostList 的变化。这是我的 GraphiQL 的屏幕截图:

enter image description here

解决方法

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

您似乎在使用 PostGraphile 中的 "simple subscriptions" 功能,所以我会假设是这种情况来回答。

有了订阅 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 Subscriptions documentation 中阅读更多相关信息。