内容提要
PostgREST 9发布,新增功能包括支持内连接嵌套表、无名参数的POST请求,以及与PostgreSQL 14的兼容性更新。用户可以通过内连接过滤嵌套表数据,简化Webhook处理,并支持分区表。
延伸解读
内连接嵌套表:过滤顶层数据的新方式
PostgREST 9 新增了内连接嵌套表的功能,允许通过 !inner 关键字,基于嵌套表的过滤条件来筛选顶层表的数据。例如,在查询 messages 时,可以筛选出 users.username 为 'Jane' 的记录。这一特性适用于所有 Supabase 客户端库,并支持 gt、in 等操作符,为复杂查询提供了更灵活的手段。
无名参数函数:简化 Webhook 处理
现在,PostgREST 9 支持向具有单个无名参数的函数发起 POST 请求。这对于接收 JSON 负载的 Webhook 特别有用。例如,使用 Postmark 的 bounce webhook 时,可以创建一个接收 json 参数的函数,直接通过 rpc 调用将数据插入数据库,无需再为参数命名,简化了集成流程。
PostgreSQL 14 兼容性:自定义认证函数需更新
为了兼容 PostgreSQL 14,PostgREST 9 引入了一个破坏性变更。如果你使用了自定义认证函数并通过 PostgREST HTTP Context 获取请求信息,需要更新函数写法。例如,原先使用 current_setting('request.jwt.claim.custom-claim', true) 的地方,现在应改为 current_setting('request.jwt.claims', true)::json->>'custom-claim'。若仅使用 Supabase 默认认证函数,
Q&A
PostgREST 9有哪些新功能?
PostgREST 9新增支持内连接嵌套表、无名参数的POST请求,以及与PostgreSQL 14的兼容性更新。
如何使用内连接过滤嵌套表数据?
用户可以通过内连接嵌套表来过滤数据,例如使用!inner关键字来根据嵌套表的条件过滤顶层表的数据。
无名参数的POST请求有什么用?
无名参数的POST请求方便处理JSON负载,特别适用于Webhook场景,允许直接将数据发送到数据库。
PostgREST 9与PostgreSQL 14的兼容性更新有哪些影响?
用户需要更新自定义认证函数以适应PostgreSQL 14的变化,使用默认认证函数的用户无需操作。
PostgREST 9支持哪些新特性?
除了内连接和无名参数外,PostgREST 9还支持分区表,并改进了文档和修复了多个bug。
如何处理Webhook发送的JSON数据?
可以创建一个接收原始JSON的函数,并通过rpc调用将Webhook数据直接发送到数据库。