从另一个突变中调用 GraphQL 突变?

Posted

技术标签:

【中文标题】从另一个突变中调用 GraphQL 突变?【英文标题】:Calling GraphQL mutation from another mutation? 【发布时间】:2017-01-21 02:53:01 【问题描述】:

是否可以从突变中对另一个 graphqlType 运行突变?我不确定这是否是个好主意。理想情况下,最好为每个 graphql 数据类型创建突变,然后在需要时调用这些函数中的每一个。希望这能让事情变得更加干燥。

例如,我有 2 个 graphql 类型“项目”和“房间”。对于每个项目,都需要创建一个房间,并将 ID 放在项目中以供以后参考。

我看到了 3 种方法:

从前端,运行 2 个不同的 graphql 查询(针对一个新项目和一个新房间),最后一个使用新房间 ID 更新项目。 在后端/graphql 服务器上。为简单起见,只需在一个解析函数中处理所有数据库调用,返回项目和创建的房间。 在突变中运行突变。从项目创建函数调用房间创建函数,并返回两个数据集。

仍在学习使用 graphql 的诀窍,所以任何关于什么是好的做法的见解都会很棒。

【问题讨论】:

【参考方案1】:

我相信你很久以前就找到了解决问题的方法,但为什么不做一个捕获整个过程的突变,比如createProjectAndRoom?我认为将 GraphQL 解析器视为非常严格地映射到单个模型上的单个操作是错误的。

【讨论】:

【参考方案2】:

最常见的方法是使用afterInsert(或类似名称)挂钩。所以在这种情况下,在创建了“房间”之后,在插入钩子之后创建“项目”。

【讨论】:

是的,这基本上是我已经在做的事情。调用第一个函数就成功了。就我而言,我想通过 graphql 查询语言来完成。

以上是关于从另一个突变中调用 GraphQL 突变?的主要内容,如果未能解决你的问题,请参考以下文章

如何从单个反应组件中调用多个 graphql 突变?

如何处理 GraphQL 中的嵌套输入

如何从另一个组件重新获取 graphql 查询?

Apollo GraphQL:从服务器调用突变?

使用钩子从反应中调用 GraphQL 突变的正确方法

如何使用动态别名在单个请求中多次调用 GraphQL 突变