graphql - Apollo GraphQL 客户端查询返回自省结果而不是数据
问题描述
我目前正在尝试通过使用Apollo作为GraphQL客户端从NextJS应用程序的Squidex API获取数据。On ,都在模式下,一切正常。localhost
dev/production
在Heroku上部署应用程序后,相同的查询返回自省模式作为结果,而不是预期的数据。在一个真实的例子中,通过运行如下查询:
{
queryPageContents(search: "Home") {
...PagesFragmentsPageId
data {
...PagesFragmentsPage
...PagesFragmentsHome
}
}
}
${Pages.fragments.pageId}
${Pages.fragments.page}
${Pages.fragments.home}
}
基本上我在询问有关网页的各种数据,使用片段等。我的预期数据应该如下 - 例如localhost
:
但我在 Heroku 上收到了这个,而不是上面的:
因此,我的应用程序渲染失败,因为我的代码查找名为的 JSON 节点queryPageContents
- 如第一个屏幕截图所示 - 但它当前__schema
作为查询结果接收。所以这会导致500
前端出错。
我四处搜索,发现这个graphql-disable-introspection必须安装在服务器端。我不知道它是否可以解决这个问题,但我不知道这是怎么发生的。
对此有何建议?
提前感谢大家。
解决方案
正如 Squidex 的 Sebastian Stehle 所注意到的,通过在数据加载检查之后推迟页面数据初始化,它解决了这个问题。在这样的 NextJS 场景中:
[...]
const {loading, error, data} = useQuery(PAGE_QUERY.pages.home);
// Instead here, pages it's being moved after error/loading checking as follows
// Exception check
if (error) {
return <ErrorDb error={error} />
}
// DB fetching check
if (loading) {
return null;
}
// Data initialization here
const pages = data.queryPageContents;
return (
// Page
[...]
);
[...]
推荐阅读
- .net-core-2.0 - 从 netcore 1.1 更改为 netcore 2.2
- ios - 从 base64 字符串中获取 IV 和密钥
- java - jsp 上的 ${_csrf.token} 在 spring-security 中始终为空
- sql - 是否可以在 postgresql 中创建交叉关系约束?
- android - 如何在启用对讲的情况下获取当前可访问性选定的项目
- heroku - 促进以前的构建
- c# - 在 C# winform 中导入和连接 Outlook 日历
- node.js - Google App Engine 页面 URL 转到 404 页面而不是索引页面
- javascript - Jquery .on() 'keyup' 功能不起作用
- javascript - javaScript 运行时错误:提供的 url 上应为“:”