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

Jus*_*tin 11 javascript graphql

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

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

我看到3种方法:

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

还在用graphql学习绳索,所以任何关于什么是良好实践的见解都会很棒.

acj*_*jay 5

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


sam*_*cos 0

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