如果变量在GraphQL中为null,如何跳过查询?
我试图跳过一个查询,如果对象不在那里,但它似乎不工作,我想知道是否有任何解决方案 这是我的问题如果变量在GraphQL中为null,如何跳过查询?,graphql,Graphql,我试图跳过一个查询,如果对象不在那里,但它似乎不工作,我想知道是否有任何解决方案 这是我的问题 graphql(GET_UBO_DECLARATIONS, { name: "getUboDeclarations", options: () => ({ fetchPolicy: "network-only" }) }), graphql(GET_UBOS, { name: "getUbos", skip: props =>
graphql(GET_UBO_DECLARATIONS, {
name: "getUboDeclarations",
options: () => ({
fetchPolicy: "network-only"
})
}),
graphql(GET_UBOS, {
name: "getUbos",
skip: props =>
!props.getUboDeclarations ||
!props.getUboDeclarations.getUboDeclarationsForThisUser,
options: props => ({
fetchPolicy: "network-only",
variables: {
_id: props.getUboDeclarations.getUboDeclarationsForThisUser._id
}
})
}),
props.getUboDeclarations.getubodeclarationsforthis用户返回null,因此它应该为false并跳过查询我相信您缺少getUbos查询中的位置
},问题不在于跳过,而在于变量-无法保证这些选项的求值顺序,因此即使跳过的求值结果为true,也可能会调用options函数。如果调用它并且props.getUboDeclarations.getUboDeclarationsForThisUser实际上为null,则会出现TypeError,因为您试图读取null值的_id属性。修复方法是修改变量以考虑可能的空值:
variables: {
_id: props.getUboDeclarations && props.getUboDeclarations.getUboDeclarationsForThisUser && props.getUboDeclarations.getUboDeclarationsForThisUser_id
}
请注意,您可以使用lodash's get之类的工具使这些空保护子句更易于处理。这两个graphql查询是在同一个组合中吗?@PiyushBhati Yes您是说它不会被跳过,因为它发生了类型错误,对吗?谢谢您。很好的解释和很好的提示。
variables: {
_id: props.getUboDeclarations && props.getUboDeclarations.getUboDeclarationsForThisUser && props.getUboDeclarations.getUboDeclarationsForThisUser_id
}