GraphQL查询含两个ID!必填字段,如何仅使用并传递单个参数
解决GraphQL必填ID参数的问题
你遇到的问题根源在于:你的查询同时请求了table和view两个字段,而这两个字段在后端Schema里的id参数都是必填类型(ID!)。只要查询里包含了某个字段,GraphQL就会校验该字段的所有必填参数是否齐全,所以哪怕你只需要view的数据,只要查询里写了table字段,就必须传tableID,否则就会触发必填项错误。
可行的解决方案:
- 只查询需要的字段:当你仅需获取
view相关信息时,直接删掉查询里的table部分,修改后的查询如下:
query getData($viewID: ID!) { view(id: $viewID) { id name } }
此时只需要传递viewID参数:
{ "viewID": "123" }
这样就不会触发任何必填项错误,因为查询里不再包含需要tableID的table字段。
- 拆分查询:如果你经常需要分别查询
table或view,可以单独定义两个查询:- 查询table的专属查询:
query getTable($tableID: ID!) { table(id: $tableID) { id name } }- 查询view的专属查询:
使用时按需调用对应的查询,传递对应参数即可。query getView($viewID: ID!) { view(id: $viewID) { id name } }
关键提醒:
GraphQL的校验规则是只要查询中包含某个字段,就必须满足该字段的所有必填参数要求。所以不要在查询中加入你不需要的字段,这不仅能避免参数校验错误,还能减少不必要的数据请求,提升查询效率。
内容的提问来源于stack exchange,提问作者nb_nb_nb
相关产品推荐
相关产品推荐

