配置postgraphile以支持简洁的嵌套突变



昨天结束了与Hasura的几年的合作来到postgraphile。我被PG在禁区外的表现惊呆了。相对于Hasura,我主要的失落感是PG提供的GQL api。如果我有一个带有Address外键的Customer,并且我添加了嵌套的mutations插件,我可以这样说:

mutation MyMutation {
createCustomer(
input: {customer: {addressToAddressId: {create: {line1: "5", line2: "The Street"}}, firstName: "Breda", lastName: "Smith"}}
) {
address {
id
}
customer {
id
}
}
}

但是对于Hasura,我可以这样说:

mutation MyMutation {
createCustomer(input:{firstName: "Breda", lastName: "Smith", address:{line1: "5", line2: "The Street"}}) {
address {
id
}
customer {
id
}
}
}

我如何配置PG使其能够进行这种突变?

我在postgraphile discord频道上问,Benjie回复:

写一个插件来做这件事是可能的,但我一般不太喜欢CRUD的变化。我会这样做:

考虑向GraphQL模式添加突变的第一种方法是使用Custom Mutations。它们从PostgreSQL数据库中的VOLATILE函数中创建单独的高度专一的突变。在他们的文档中定义了他们必须满足的需求清单。

如果这不能满足您的需求,您也可以使用makeExtendSchemaPlugin或查看社区插件,看看是否有一个适合您的需求。关于GraphQL变异设计的相关阅读

最新更新