GraphQL - 如何链接查询和突变?

时间:2017-04-26 03:42:45

标签: graphql apollo

在我的graphQL架构中,我有两个对象之间的关系。说人类和猫。

人类有许多猫和猫有一个人。

如果我想创建属于人类的新Cat,我需要通过ID查询人类,然后我需要使用该ID进行突变以创建猫。

我如何将这些链接在一起?这似乎很简单,但无法找到合适的例子。我也很可能以错误的方式思考这个问题。

1 个答案:

答案 0 :(得分:0)

我认为将它们链起来并不合理。如果要创建新猫,您需要一个列表,您可以在其中选择要添加猫的人。因此,在发送变异之前,您必须先查询人类。

猫的突变将包含选定的人类ID,过程可能如下所示:

  1. 查询人类
  2. const getAllHumansQuery = gql`
    query getAllHumans {
       getAllHumans {
          id
          name
       }
    }
    `;

    1. 在客户端上选择人类构建表单

    2. 发送创建新的猫突变

    3. // server
      `
      input CatInput {
        name: String!
        humanIds: [ID!]
      }
      
      createCat(newCat: CatInput!) : String
      `
      
      
      // client
      
      const createCatMutation = gql `
        mutation createCat($newCat: CatInput!) {
          createCat(newCat: $newCat) {
            name
          }
        }
      `;