内容提要
pg_graphql在1.0.0版本发布后进行了多项更新,支持Postgres 15.1.0.63及以上版本。新增功能包括视图、物化视图和外部表的GraphQL映射,支持null值和文本过滤(如like、ilike)。GraphQL指令@skip和@include现已可用,允许根据布尔变量有条件地跳过或包含字段。此外,用户可以为表和列添加描述以改善API文档。未来版本将支持用户定义函数和嵌套插入等功能。
延伸解读
视图与外部表支持:扩展GraphQL映射范围
pg_graphql v1.2 将 GraphQL 映射从标准表扩展到视图、物化视图和外部表。但所有暴露的实体必须定义主键,视图需通过注释指令指定主键列。简单视图还自动支持插入和更新,这有助于在迁移底层表时保持 API 向后兼容。
文本过滤增强:like、ilike 与 startsWith 的取舍
新增的 like、ilike 和 startsWith 过滤选项提升了查询灵活性。但文章指出,startsWith 应优先使用,因为它能利用 B-Tree 索引提升性能。like 和 ilike 可能难以索引,平台通过 citext 和 PGroonga 解决了可扩展性风险。
GraphQL 指令与描述:提升查询效率与文档质量
@skip 和 @include 指令现已可用,允许根据布尔变量有条件地跳过或包含字段,从而减少数据传输。同时,用户可通过注释指令为表和列添加描述,这些描述会在 GraphiQL 等 IDE 中显示,改善 API 文档。
未来路线图:用户定义函数与嵌套插入
pg_graphql 后续版本计划支持用户定义函数和嵌套插入,并探索基于 SQL 函数的计算关系替代方案。这些功能将进一步提升 GraphQL API 的表达能力,但具体发布时间尚未明确。
Q&A
pg_graphql v1.2支持哪些Postgres版本?
pg_graphql v1.2支持Postgres 15.1.0.63及以上版本。
pg_graphql v1.2新增了哪些功能?
新增功能包括视图、物化视图和外部表的GraphQL映射,支持null值和文本过滤,以及GraphQL指令@skip和@include。
如何在pg_graphql中处理null值?
在pg_graphql中,可以使用is null和is not null过滤器来处理null值,使用{is: NULL}和{is: NOT_NULL}进行查询。
GraphQL指令@skip和@include的作用是什么?
@skip和@include指令用于根据布尔变量有条件地跳过或包含字段,从而提高查询效率。
用户如何为表和列添加描述以改善API文档?
用户可以使用comment指令为表和列添加描述,这些描述会在GraphQL IDE中渲染,提供更清晰的API文档。
未来的pg_graphql版本将支持哪些新功能?
未来版本将支持用户定义函数和嵌套插入等功能。