是否可以将对象作为变量传递给 graphQL 突变?

IT技术 reactjs graphql apollo
2021-05-18 18:58:59

是否可以将对象作为变量传递给 graphQL 突变?

let salesDate = {
    company_id: "abcd",
    source: "tally",
    data: {
        value: "02",
        date: "2016-17-01"
    }
};

const mutation = gql`
  mutation addData($data: Object){
    addData(data: $data){
     data
    }
  }
`;

这不起作用,我看不到任何将对象定义为参数类型的方法。

1个回答

您必须定义一个 GraphQL 输入类型。看看这个备忘单

因此,在您的情况下,您必须在服务器上定义一个输入并在突变中使用它,例如:

...

`
input DataInput {
  value: Number!
  data: String!
}

...

addData(data: DataInput!): SalesDate

`

在客户端,您可以像这样使用它:

const mutation = gql
  mutation addData($data: DataInput!){
    addData(data: $data){
     data
    }
  }
;