首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为apollo客户端生成片段类型?

如何为apollo客户端生成片段类型?
EN

Stack Overflow用户
提问于 2019-09-19 07:03:04
回答 1查看 1.1K关注 0票数 1

我有一个用apollo客户端写的reason-react应用程序。我在前端定义了一些片段,基本上重用了一些字段定义。我正在为一个使用片段的组件设置自动化测试,但是我一直收到这样的警告,说我需要使用IntrospectionFragmentMatcher

代码语言:javascript
复制
'You are using the simple (heuristic) fragment matcher, but your queries contain union or interface types. Apollo Client will not be able to accurately map fragments. To make this error go away, use the `IntrospectionFragmentMatcher` as described in the docs: https://www.apollographql.com/docs/react/advanced/fragments.html#fragment-matcher'

我已经尝试根据docs设置片段匹配器。codegen结果不返回任何类型:

代码语言:javascript
复制
{
  "__schema": {
    "types": []
  }
}

当我查询我的服务器并查看apollo-client推荐的手动方法时,我注意到它也不会返回类型。

另一件奇怪的事情是,当我不使用片段匹配器时,我会得到模拟的响应,但我只会得到来自apollo的警告。如果我真的使用了它,那么模拟的响应就不会正确返回。

为什么我要在graphql api中查询在我的前端代码中定义的片段?为什么我只在运行测试时收到这些错误&使用模拟数据,而不是在运行我的实际应用程序时?

EN

回答 1

Stack Overflow用户

发布于 2019-09-19 07:15:58

正如错误所述,默认的片段匹配器不适用于交集或并集类型。你需要使用阿波罗的IntrospectionFragmentMatcher。它的工作方式是向服务器请求(内省)有关您的模式类型的信息,然后将该信息提供给缓存,以便它可以准确地匹配字段。它不是向服务器查询有关您在前端定义的片段的信息,而是请求有关GraphQL模式的数据,这些数据必须在您的后端定义,以便能够正确地将两者关联起来。在文档中有一个例子,还有更多信息here

至于为什么你的服务器没有返回任何类型,这是一个单独的问题,需要更多的信息才能调试。如果您使用的是Apollo Server,请仔细检查您的模式,以确保正确定义了所有必需的类型,并且在初始化时将它们传递到服务器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58001724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档