当@include false 或@skip true 时,是不是可以在graphql 中使用空值UUID 进行查询
Posted
技术标签:
【中文标题】当@include false 或@skip true 时,是不是可以在graphql 中使用空值UUID 进行查询【英文标题】:Is it possible to query in graphql with null value UUID when @include false or @skip true当@include false 或@skip true 时,是否可以在graphql 中使用空值UUID 进行查询 【发布时间】:2018-08-12 16:05:17 【问题描述】:对于 Apollo GraphQL:
我正在尝试查询需要 UUID 的字段。但如果变量为空,我不需要该字段。我想知道处理这个问题的最佳方法是什么?我目前正在传递一个默认的 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."
【问题讨论】:
您可能会收到此特定错误,因为$documentId
被定义为不可为空。试试$documentId: UUID
。在调用查询之前,您可能需要检查 initialFetch
和 documentId
是否有效。
【参考方案1】:
我发现 Apollo skip 是我需要的,它可以完全跳过 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);
【讨论】:
以上是关于当@include false 或@skip true 时,是不是可以在graphql 中使用空值UUID 进行查询的主要内容,如果未能解决你的问题,请参考以下文章
为啥当 == 为空值返回 true 时 >= 返回 false?
为啥当键是 int[] 时 Dictionary.ContainsKey 返回 False? [复制]
“-Dmaven.test.skip.exec”与“-Dmaven.test.skip=true”和“-DskipTests”有啥区别?