问题标签 [apollo-boost]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular6 - Apollo-boost 缓存问题
我遇到了 apollo 客户端缓存的问题,我不确定我是否理解原因。我正在使用 apollo-boost 构建一个 angular 6 应用程序,一切运行良好。我现在有一个场景,其中我的 graphql 查询需要一个 id(用户的)和一个过滤器字符串(用于过滤后端的记录)。角度组件代码如下所示:
该getAppointments
函数如下所示:
graphql 查询:
主要问题:
我有 4 种不同的可能过滤器值(全部、未确认、已确认、已付费)。当我使用每个过滤器值运行这些查询时,它按预期工作,并且我从 apollo 服务器获取正确的结果集。但是,一旦我两次运行相同的查询,我只会返回最后一次查询的结果,并且没有进行网络调用,大概是因为它使用的是缓存版本。
缓存不应该基于可变输入吗?当我第一次使用不同的变量运行时,它似乎运行良好,但是一旦一个被复制,我只会得到最后一次调用产生的任何东西。谢谢你的帮助!
这个 gif 演示了这个问题:
graphql - Apollo 客户端内省查询
在操场上工作...
我正在尝试查询以下枚举值:
当我用操场测试查询时,它可以工作。我收到以下枚举值列表ActivityType
:
不适用于 Apollo 客户端...
当我使用客户端运行以下代码时,我收到了第一个查询的预期结果,但不是第二个:
结果
您必须与客户端一起实现一些特殊的功能以允许内省查询吗?
reactjs - Apollo boost - 查询中的 __typename 防止新的突变
我的流星/反应/阿波罗(带提升)项目有问题。当我从服务器查询数据时,它会将 __typename 添加到查询中的每个对象和子对象中,但在我的情况下,它会产生一个主要问题,因为我通常会重用这些数据以将它们发送到其他突变。现在另一个突变告诉我有一个错误,因为 __typename 字段未在我的 graphql 模式中定义。
我试图通过将 addTypename: false 字段添加到我的 apollo 客户端来修复,但它没有改变任何东西(注意我正在使用 apollo boost,这可能是它无法正常工作的原因):
此外,即使它有效,它似乎也不是很优化。在我看来,在查询结果中添加了一个字段,我很惊讶没有在网上找到任何明确的解决方案。一些建议的解决方案:
- 在客户端手动过滤
- 将中间件添加到 apollo
- 将 __typename 字段添加到我的所有模式中......
但它们似乎都不适合阿波罗计划带来的“简单”查询。我希望提供一个更简单、更合乎逻辑的解决方案,但到目前为止,找不到任何解决方案。
reactjs - [GraphQL 错误]:消息:所需类型“MongoID!”的变量“$id” 没有提供
我有以下查询:
然后我将查询绑定到我的“React.Component”
我确定 props.ID 等同于 MongoDB ID。我也确定正在读取来自父组件的道具。
上面的代码导致以下错误:
[GraphQL 错误]:消息:所需类型“MongoID!”的变量“$id” 未提供。,位置:[object Object],路径:未定义
任何反馈将不胜感激。谢谢!
heroku - 向我的 graphql API 发起查询时出现网络错误
这是我在进行查询时收到的错误消息:
[Network error]: ServerParseError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
当将我的 ApolloClient 的 uri 设置为http://localhost:4000/graphql
并在本地运行服务器时,查询在本地运行良好。
但是,如果我将服务器部署到 heroku,然后将客户端的 uri 设置为https://my-app.herokuapp.com/
它不起作用,我会收到上面的错误消息。网络选项卡向我的 heroku 应用程序的 POST 请求显示 404,“无法 POST”
heroku 日志在推送时没有显示错误。
知道我在这里缺少什么吗?我检查了所有我能找到的教程,我没有发现任何明显的缺失。
这是我的客户要求:
const client = new ApolloClient({
uri: 'https://my-app.herokuapp.com/',
headers: {
authorization: "Bearer API_KEY",
'content-type': 'application/json'
}
});
reactjs - 与 GraphQL 客户端反应
React
与GraphQL clients
like一起使用Apollo Client
是个好主意吗?react
我可以使用和 new获得相同的结果Context API
。
基本上我可以使用GraphQL API
s usingaxios
或任何其他类似的库。对于状态管理,我可以使用 react 的 new Context API
,这非常简单。
是否还有任何优势Apollo Client
。Apollo client
当我没有它也能达到同样的效果时,为什么我真的会去。它将帮助我减小bundle
尺寸。
create-react-app - 未定义具有 GraphQL 和 React Require 的节点
我正在开发一个带有 GraphQL 后端的节点,并且刚刚开始使用create-react-app
.
在我添加以下代码之前一切顺利:
Apollo 代码将它破坏到它告诉我需要未定义的地方。我理解错误与在浏览器端使用 require 语句有关,而我不是。
reactjs - 使用 ApolloClient 时无法访问 this.props
我正在使用 apollo-boost 并且我创建了一个 ApolloClient 并且我想在运行突变后进行一些重定向但我无法访问道具
index.js
路由组件
添加产品组件
控制台中的 this.props 显示{}
为了缓解这种情况,我还尝试使用 history 包,它更改了 url,但重定向不起作用
我可以使用状态进行重定向,但我宁愿使用历史道具而不是状态。
对此的任何建议将不胜感激。
graphql-js - 如何使用来自 apollo-boost 的 gql 返回不同的数据
我正在使用一个React
组件,该组件是TypeScript
在我使用库中查询一些数据的地方gql
实现的apollo-boost
。第一次使用所以知识很少。
如何从此查询中获取不同的国家/地区?尝试使用distinct
/ distinct_on
。他们都没有工作。
node.js - Vue Apollo:如何通过 GraphQL 在 VueJS 前端显示 Mysql 数据
我是 VueJS 和 NodeJS 开发的新开发人员。
我在前端部分使用 apollo-boost、graphql、vue-apollo,在后端部分使用 express-graphql、express、graphql、knex、MySQL。
运行后端部分后,我得到如下正确响应:输入参数
输出:
所以我认为代码在服务器端是可以的。现在我想在 vuejs 中显示这些数据。我实现的代码如下:
我没有收到任何错误,但没有任何结果显示在前端部分。请让我知道做错了什么?