问题描述
我一直使用 graphql-request 库作为我的 GraphQL 客户端选择,从第一印象开始,一切都很简单,直到我开始发送一个嵌套的对象数组,从而用 GraphQL 文档变量表示数据模式。通常使用 apollo,您可以在查询和更改之前定义数据模式和类型,但我不确定如何使用 graphql-request 库来做到这一点。
实际数据是这样的
const contacts = [
{
recordID: '4B6987A1-4179-426A-B38A-8B122995D0F8:ABPerson',givenname: 'test',phoneNumbers: [
{
label: 'mobile',number: '123456789',},],}
]
突变看起来像这样
const TEST_MUTATION = gql`
mutation TestMutation($contacts: /* how to define the type of the data here???*/) {
testMutation(contacts: $contacts) {
recordID,givenname,phoneNumbers {
label,number
}
}
}
`;
如果这个问题让您感到困惑,有没有一种方法可以让 graphql-request 库定义输入类型并获得类似 apollo 的类型?
解决方法
apollo-client
和 graphql-request
都是发出标准 GraphQL 请求的 GraphQL 客户端——无论您使用什么客户端(或者如果您使用 fetch
、curl
或其他方式)。
变量 $contacts
被用作字段 contacts
上的 testMutation
参数的值,因此其类型必须与该参数的类型匹配。换句话说,无论 contacts
的类型是什么,都需要是 $contacts
变量的类型。什么类型完全取决于您将查询发送到的端点的架构。您可以通过检查架构或参考 API 的文档来发现这一点。如果您还对服务器进行了编码,那么您应该已经知道类型。