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

Tha*_*par 5 apollo graphql

在我的graphQL模式中,我有两个对象之间的关系。说人与猫。

人有很多猫,猫有一个人。

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

如何将它们链接在一起?看起来很简单,但是找不到合适的例子。我也很可能以错误的方式考虑了这一点。

Loc*_*0_0 -2

我认为把它们拴起来是没有意义的。如果您想创建一只新猫,您需要一个列表,您可以在其中选择要将猫添加到的人类。因此,在发送突变之前,您必须先查询人类。

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

  1. 查询人类

const getAllHumansQuery = gql`
query getAllHumans {
   getAllHumans {
      id
      name
   }
}
`;
Run Code Online (Sandbox Code Playgroud)

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

  2. 发送创建新的猫突变

// server
`
input CatInput {
  name: String!
  humanIds: [ID!]
}

createCat(newCat: CatInput!) : String
`


// client

const createCatMutation = gql `
  mutation createCat($newCat: CatInput!) {
    createCat(newCat: $newCat) {
      name
    }
  }
`;
Run Code Online (Sandbox Code Playgroud)