当我在Postgresql中编写函数时,我可以添加strict,导致Graphql(!)中的所有参数都是必需的,而没有strict的所有参数都是可选的。
在非严格函数的必填字段中,我可以抛出异常或简单地返回null而不执行函数,就像参数为null时strict函数会执行的那样。但是如何告诉Postgraphile需要哪些参数?通过注释或其他方式,或将默认值标记为可选参数。
答案 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],
})