我已定义此查询,并在我的应用程序中成功使用它:
export const GET_TEAM = gql`
query($id: ID!) {
getTeam(id: $id) {
...CompleteTeam
}
}
${fragments.team}
`
但是想将其用于mocking purpose,为此,我需要这种表示形式:
getTeam(id: 3) {
id
name
isActivated
}
是否有任何简单的方法可以用变量来调用gql
?
有suggestions如何使用ApolloClient
的实例执行此操作。但是,如果可能的话,我宁愿跳过涉及客户端的工作,因为我只会模拟结果数据。
答案 0 :(得分:0)
在此处进行后续操作:gql
函数返回GraphQL Document AST(查询的解析树表示形式)。 AST比字符串更容易使用-至少在复杂的情况下。
对于评论中的问题:进入AST空间后,您可以进行各种转换。例如,可以使用访客模式来完成此操作。 GraphQL.js还带有visit
function,可让您替换节点。该代码应作为灵感,不保证它会起作用;)
function valueToNode(value) {
if (typeof value === 'string') {
return { kind: 'StringValue', value };
} else if (typeof value === 'number' && Number.isInteger(value)) {
// return integer value node
}
// all other value nodes...
}
visit(ast, {
VariableNode: {
enter(node) {
return valueToNode(variables[node.name.value]);
}
}
}
我不确定是否应该离开AST空间,但是如注释中所述,您可以按照注释中所述使用打印机。不知道它是否打印出不是文档的东西。