后石墨化:仅需要函数中的某些参数

时间:2019-10-25 07:26:58

标签: postgresql graphql postgraphile

当我在Postgresql中编写函数时,我可以添加strict,导致Graphql(!)中的所有参数都是必需的,而没有strict的所有参数都是可选的。

在非严格函数的必填字段中,我可以抛出异常或简单地返回null而不执行函数,就像参数为null时strict函数会执行的那样。但是如何告诉Postgraphile需要哪些参数?通过注释或其他方式,或将默认值标记为可选参数。

1 个答案:

答案 0 :(得分:0)

在我的搜索中,我发现此问题是here,尤其是this的答案。 我在引用中找到的答案:

  

此功能通过以下方式在graphile-build-pg中实现:   pgStrictFunctions设置,但是当前未通过公开   postgraphile-核心到PostGraphQL本身。它所做的就是对待所有   功能严格,要求所有参数都标记为必需   除非它们具有默认值。

     

可以将参数标记为默认null,但是当然   具有null默认值的strict函数将自动返回null   不会被召唤。

create function a(b int, c int default null)
returns int as $$
  select b;
$$ language sql stable;
  

默认情况下,b和c都不是必需的,但是   pgStrictFunctions集b将被标记为必填项(但c不会)。

尽管提到了解决方案,但并未说明如何实现。在整个项目(包括node_modules)中搜索“ pgStrictFunctions”也没有任何线索。我终于在不和谐中找到了实现方法,这就是我最终使其工作的方式:

@Module({
  controllers: [],
  imports: [
    PostGraphileModule.forRoot({
      ......
      graphileBuildOptions: {
        pgStrictFunctions: true,
      },
      ......
    }),
  ],
  providers: [GraphQLService],
})