将 GraphQL 查询转换为带有类型名的字符串
Convert GraphQL query to string with typename
我正在使用 Pact 通过 graphql(Apollo) 客户端模拟我们的服务器端。在手动尝试一些示例后,我确实注意到我们当前的大部分代码都执行如下导出:
import { gql } from '@apollo/client';
export const GET_USER_DETAILS = gql`
query GetUserDetails {
current_user {
id
first_name
last_name
username
email
gender
birth_date
home_phone
mobile_phone
}
}
`;
我的问题是如何将其转换回字符串表示以提供给 Pact 的 withQuery
方法?
额外的复杂性是我们正在使用 Apollo 缓存,这意味着我需要将 __typename
添加到我使用
的每个文档中
import { addTypenameToDocument } from '@apollo/client/utilities';
addTypenameToDocument(GET_USER_DETAILS)
我试过 addTypenameToDocument(GET_USER_DETAILS).loc.source.body
- 这里没有 __typename
,这导致 Pact 由于期望和实际查询的差异而无法模拟。
使用 graphql
包中的 print
(您应该已经安装了)。
import { print } from 'graphql';
console.log(print(GET_USER_DETAILS));
我正在使用 Pact 通过 graphql(Apollo) 客户端模拟我们的服务器端。在手动尝试一些示例后,我确实注意到我们当前的大部分代码都执行如下导出:
import { gql } from '@apollo/client';
export const GET_USER_DETAILS = gql`
query GetUserDetails {
current_user {
id
first_name
last_name
username
email
gender
birth_date
home_phone
mobile_phone
}
}
`;
我的问题是如何将其转换回字符串表示以提供给 Pact 的 withQuery
方法?
额外的复杂性是我们正在使用 Apollo 缓存,这意味着我需要将 __typename
添加到我使用
import { addTypenameToDocument } from '@apollo/client/utilities';
addTypenameToDocument(GET_USER_DETAILS)
我试过 addTypenameToDocument(GET_USER_DETAILS).loc.source.body
- 这里没有 __typename
,这导致 Pact 由于期望和实际查询的差异而无法模拟。
使用 graphql
包中的 print
(您应该已经安装了)。
import { print } from 'graphql';
console.log(print(GET_USER_DETAILS));