对于Apollo GraphQL:
我试图在需要UUID的字段上进行查询。但如果变量为null,我就不需要该字段。我想知道最好的办法是什么?我目前正在传递一个默认的documentId来解决这个问题。
这是查询的示例
query GetOverview($initialFetch: Boolean!, $documentId: UUID!) {
organization {
name
inode(id: $documentId) @include(if: $initialFetch) {
... on Inode {
inodeId
parent {
inodeId
}
}
}
}
变量:
{ initialFetch: true, documentId: ... }
这是我回来的错误
"Variable "$documentId" of required type "UUID!" was not provided."
答案 0 :(得分:1)
我发现阿波罗跳过是我所需要的,它会完全跳过HoC。 https://www.apollographql.com/docs/react/basics/queries.html#graphql-skip
它也可能建议拆分查询,尤其是在这种情况下。 https://www.apollographql.com/docs/react/recipes/query-splitting.html
正确方法的Sudo代码:
query GetOrgName {
organization {
name
}
}
query GetInode {
inode(id: $documentId) {
... on Inode {
inodeId
parent {
inodeId
}
}
}
}
const splitQuery = compose(
graphql(getOrgName, { name: "orgName" }),
graphql(getInode, {
name: "inode",
skip: props => !props.initialFetch
})
)(Component);