从另一个突变中调用 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 突变?的主要内容,如果未能解决你的问题,请参考以下文章