如何在Node.js中正确处理ApolloClient执行GraphQL查询的loading和partial状态
在Node.js后端直接调用client.query的场景下,你不需要处理loading和partial两个状态,你测试得到的undefined结果是符合预期的。
两个字段的作用说明
loading:该字段仅为前端响应式查询场景设计,比如React的useQuery钩子会在请求发起后立即返回loading: true的状态,用于前端渲染加载提示。而你调用的Promise形式的client.query只会在请求完全结束(成功/失败)后才会resolve返回结果,因此返回结果中loading要么为false要么为undefined,永远不会出现true的情况。partial:该字段仅在开启缓存且Apollo Client从本地缓存中拿到不完整的请求数据时才会被标记为true。你当前配置的fetchPolicy: "no-cache"完全绕过了缓存逻辑,因此不会触发该状态;即使你切换为带缓存的请求策略,只要没有主动配置returnPartialData: true参数,client.query也会等待服务端返回完整数据后才resolve,不会返回partial为true的结果。
后端场景的处理建议
你当前的后端数据采集场景,只需要处理返回结果中的data、errors、error三个核心字段即可,不需要额外添加loading和partial的判断逻辑,这两个字段确实是为前端UI渲染场景设计的,后端调用基本不会用到。
内容的提问来源于stack exchange,提问作者Adam A
相关产品推荐
相关产品推荐

