从另一个变异调用GraphQL变异?

时间:2016-09-13 13:18:01

标签: javascript graphql

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

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

我看到了3种方法:

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

仍在使用graphql学习绳索,因此任何有关最佳实践的见解都会很棒。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

最常见的方法是在afterInsert(或类似命名的)钩子上。所以在这种情况下,在"房间"已创建,创建"项目"在后插钩期间。