0

我已经成功创建了一个允许我创建员工记录的 graphql 突变。

mutation addNewStaff {
  createStaff(input: {
    first_name: "Test Name"
    last_name: "Lname"
    nickname: "Nname"
    positionId: 10
    divisionId: 6
    contact_numbers: [
      {number: "66643535"}
      {number: "876876867"}
    ]
    emails: [
      {address: "testuser@gmail.com"}
      {address: "gfdsaasd@gmail.com"}
    ]
    office_location: "OP" 
  }) {
    id
    first_name
    last_name
  }
}

结果是

{
  "data": {
    "createStaff": {
      "id": "16",
      "first_name": "Test Name",
      "last_name": "Lname"
    }
  }
}

emails 和 contact_numbers 是动态字段,这意味着员工可以拥有无​​限数量的电子邮件和联系号码(这些存储在单独的数据库表中,外键指向员工表)。我现在正在使用 react 和 apollo 客户端为这个项目编写前端代码。我对如何编写用于创建突变的 gql 代码感到非常困惑。我找不到一个很好的例子来说明我想要完成的事情。有人可以指导我如何做到这一点吗?

4

1 回答 1

0

您可以为您的突变创建不同的变量,例如:

import gql from 'graphql-tag'

export const addNewStaffMutation = gql`
    mutation addNewStaff(
            $firstName: Sting!, 
            $lastName: String!,
            ...
            $positionId: number!, 
            $divisionId: number!, 
            ...) {
      createStaff(input: {
        first_name: $firstName
        last_name: $lastName
        nickname: "Nname"
        positionId: $positionId
        divisionId: $divisionId
        contact_numbers: [
          {number: "66643535"}
          {number: "876876867"}
        ]
        emails: [
          {address: "testuser@gmail.com"}
          {address: "gfdsaasd@gmail.com"}
        ]
        office_location: "OP" 
      }) {
        id
        first_name
        last_name
      }
    }
`

我只替换了示例中的一些参数,因为您的有效负载非常大。

然后你可以构建你的react组件并传递所有变量。您可以阅读有关它的更多信息并查看有关Apollo Mutations的一些示例。

于 2019-02-25T15:49:26.303 回答