数据转换
该待办事项应用程序的一个实时功能是显示在线用户列表。 我们需要一种根据last_seen
的值获取这一信息的方式,该值显示用户最后在线的时间。
到目前为止,我们创建了表和关系。 Postgres 支持我们使用以下功能进行数据转换:
- 视图
- SQL 函数
在这个例子中,我们将使用Views
。应用程序需要该视图,才能查找已登录用户和最近 30 秒内在线的用户。
创建视图
用于创建该视图的 SQL 语句与此类似:
CREATE OR REPLACE VIEW "public"."online_users" ASSELECT users.id,users.last_seenFROM usersWHERE (users.last_seen >= (now() - '00:00:30'::interval));
我们添加该视图并使用 Hasura 跟踪视图,以使之能够对其进行查询。
转到“控制台” -> “数据” -> SQL 页面。
单击Run
,以创建该视图。
在线用户订阅
现在,通过对online_users
视图提出订阅查询,进行测试。
subscription {online_users {idlast_seen}}
在另一个选项卡中,更新现有用户的last_seen
值,以查看订阅响应得到更新。
将last_seen
列的值输入为now()
,然后单击Save
。
现在,回到运行订阅查询的选项卡,以查看更新的响应。
Did you find this page helpful?
Start with GraphQL on Hasura for Free
- Build apps and APIs 10x faster
- Built-in authorization and caching
- 8x more performant than hand-rolled APIs