标签: apollo

Apollo Graphql relayStylePagination 防止查询在变量更改时重新获取

当我在 Apollo 客户端缓存类型策略中使用relayStylePagination辅助函数时,更改传递给查询的变量不会再次调用查询,即使我refetch手动调用该函数也是如此。它完美地执行了该fetchMore行为并合并了新数据。

我的缓存字段如下所示:

cache: new InMemoryCache({
      typePolicies: {
        Query: {
          fields: {
            inventories: relayStylePagination(),
          },
        },
      },
    })
Run Code Online (Sandbox Code Playgroud)

apollo reactjs apollo-client apollo-cache-inmemory

5
推荐指数
1
解决办法
797
查看次数

使用 Apollo 客户端,由于 GraphQL 请求(HTTP 代码 500)不成功,Next.js 中的 SSR 崩溃

嗯,我有点矮胖。我会尽力尽可能清楚地解释我的问题。

我使用 Apollo 客户端来执行 GraphQL 查询。我也使用 NextJS。出于 SEO 原因,我有一个页面需要在服务器端呈现。

所以我有一个getProductFromSlug函数可以让我执行我的请求。

export const getProductFromSlug = async (slug: string) => {
  try {
    const { data, error } = await apolloClient.query<{
      product: Product
    }>({
      query: GET_PRODUCT_BY_SLUG_QUERY,
      variables: {
        slug,
      },
    })

    if (error) {
      return { errors: [error.message] }
    }

    if (!('product' in data) || data.product === null) {
      return { errors: ['Product with specified url not found'] }
    }

    return {
      data,
    }
  } catch (error) {
    // @ts-ignore …
Run Code Online (Sandbox Code Playgroud)

apollo reactjs graphql next.js apollo-client

5
推荐指数
1
解决办法
2107
查看次数

Apollo 客户端 Devtools 中的重复活动查询

I\xe2\x80\x99m 使用 React 与 Apollo Client 3 和 Hasura 作为 GraphQL 服务器。

\n

该组件ProductList使用该get_products查询一次。\n然后该查询的两个精确副本将存储在 Apollo 缓存中,如 Apollo DevTools 中所示。

\n

我的问题是 - 为什么缓存中会生成两个相同的查询而不是一个?

\n

Apollo 开发工具结果

\n

在此输入图像描述

\n

我的代码

\n
import {\n  ApolloClient,\n  ApolloProvider,\n  InMemoryCache,\n  HttpLink,\n  gql,\n  useQuery,\n} from "@apollo/client";\n\nconst client = new ApolloClient({\n  link: new HttpLink({\n    uri: "http://localhost:8080/v1/graphql",\n  }),\n  cache: new InMemoryCache(),\n});\n\nfunction App() {\n  return (\n    <div className="App">\n      <ApolloProvider client={client}>\n        <ProductList />\n      </ApolloProvider>\n    </div>\n  );\n}\n\nconst ProductList = () => {\n  const GET_PRODUCTS = gql`\n    query …
Run Code Online (Sandbox Code Playgroud)

apollo reactjs graphql apollo-client hasura

5
推荐指数
1
解决办法
1395
查看次数

我需要有关“找不到命名空间种类”问题的帮助

我刚刚将 NestJs 从 7.5 更新到最新版本(8.3.1),解决了弹出的问题,但我无法摆脱其中之一。

完整错误:

node_modules/@apollo/federation/dist/composition/utils.d.ts:43:316 - error TS2503: Cannot find namespace 'Kind'.
Run Code Online (Sandbox Code Playgroud)

虽然 Kind 是从 GraphQl 模块导入的常量,但它似乎无法识别它。或者也许是打字稿问题?

任何帮助将不胜感激。

node.js apollo nestjs

5
推荐指数
1
解决办法
904
查看次数

Vue Apollo自动刷新令牌实现

我正在尝试对我的 SPA 实施 JWT 身份验证,登录和注销已完成,但我无法找出实施刷新令牌的正确(或只是工作)方法,任何帮助将不胜感激!

我找不到任何有关通过 Vue Appollo 处理刷新令牌的教程。有“ Vue CLI Apollo 插件

createApolloClient({
  ...
  // Custom pre-auth links
  // Useful if you want, for example, to set a custom middleware for refreshing an access token.
  preAuthLinks: [],
  ...})
Run Code Online (Sandbox Code Playgroud)

但没有关于实现它的示例,并且看起来“Vue CLI Apollo 插件”已被弃用,它长时间更新并且无法与 VUE CLI 4 一起使用。

当前的前端堆栈是:

Vue-cli 4.5,
Apollo/client 3.5.8
Vue-apollo-option 4.0.0
Graphql 16.3.0
Vuex 4.0
Run Code Online (Sandbox Code Playgroud)

我的 vue-apollo.js 配置:

import { createApolloProvider } from "@vue/apollo-option";
import { AUTH_TOKEN } from "@/constants/settings";

import {
  ApolloClient,
  createHttpLink,
  InMemoryCache,
  ApolloLink, …
Run Code Online (Sandbox Code Playgroud)

apollo vue.js apollo-client vue-cli vue-apollo

5
推荐指数
0
解决办法
861
查看次数

从 XCode 代码覆盖范围中排除 swift 文件

我正在使用 Apollo SDK,它生成一个 API.swift 文件。我们可以从代码覆盖率中排除这个文件吗

ios apollo swift apollo-ios

5
推荐指数
1
解决办法
4401
查看次数

Apollo客户端,订阅fragment

我正在尝试从缓存中读取数据,使用cache.readFragment并订阅更改,就像这样useQuery做一样。我尝试使用useQuerywithfetchPolicy: 'cache-only'但尽管我在缓存中看到我的实体,但数据返回为空。这cache.readFragment正常,但它不订阅,这意味着应用于缓存的任何更改都不会重新触发它。

我怎样才能实现这种行为,并让它在某些内容突变到缓存后立即工作?

  // one time read
  const data = client.cache.readFragment({
    id: client.cache.identify({
      __typename: 'Creator',
      id: creatorId,
    }),
    fragment: IS_FOLLOWING_FRAGMENT,
  }) as MyCreatorIsFollowing;
Run Code Online (Sandbox Code Playgroud)
  // comes back as null although I see it in the cache
  const { data } = useQuery(GET_IS_FOLLOW_CREATOR, {
    fetchPolicy: 'cache-only',
    variables: { id: creatorId },
  });
Run Code Online (Sandbox Code Playgroud)

apollo react-apollo apollo-client

5
推荐指数
0
解决办法
129
查看次数

“错误错误:参数 2 `isExtractable` 必须是一个函数。” 使用 Apollo Angular 上传文件时

根据https://apollo-angular.com/docs/data/network#file-upload,为了使用 Apollo Angular 上传文件,您必须添加context: {useMultipart: true}到 graphQL 查询中,并将该extractFiles函数添加到 httpLink 创建中。

但是,我不断收到此错误。似乎isExtractableFile没有使用默认功能,我不知道为什么会这样。

这是我的graphql.module.ts

const uri = environment.graphQLUrl; // <-- add the URL of the GraphQL server here
export function createApollo(httpLink: HttpLink): ApolloClientOptions<any> {
  return {
    link: httpLink.create({uri, useMultipart: true, extractFiles}),
    cache: new InMemoryCache(),
  };
}

@NgModule({
  exports: [ApolloModule],
  providers: [
    {
      provide: APOLLO_OPTIONS,
      useFactory: createApollo,
      deps: [HttpLink],
    },
  ],
})
export class GraphQLModule {}
Run Code Online (Sandbox Code Playgroud)

file-upload apollo graphql apollo-client angular

5
推荐指数
1
解决办法
395
查看次数

Apollo iOS 客户端代码生成:“错误:无法查询字段”

我正在尝试使用可可豆荚按照此步骤生成代码。步骤: 5. 使用appolo-ios-cli generate命令设置并运行代码生成我收到此错误:

 Error: Cannot query field "getAuthServiceHealth" on type "undefined"
 ./../NetworkInterface/GraphQL/QueriesList.graphql:2:2
1 | query Health {
2 |     getAuthServiceHealth{
  |  ^
3 |         status
Run Code Online (Sandbox Code Playgroud)

查询.graphql:

query Health {
    getAuthServiceHealth{
        status
        service
    }
}
Run Code Online (Sandbox Code Playgroud)

架构:

{
  "__schema": {
    "queryType": {
      "name": "Query"
    },
    "mutationType": null,
    "subscriptionType": null,
    "types": [
      {
        "kind": "OBJECT",
        "name": "Query",
        "description": null,
        "fields": [
          {
            "name": "getAuthServiceHealth",
            "description": null,
            "args": [],
            "type": {
              "kind": "NON_NULL",
              "name": null,
              "ofType": {
                "kind": "OBJECT", …
Run Code Online (Sandbox Code Playgroud)

ios apollo graphql apollo-client

5
推荐指数
1
解决办法
480
查看次数

在运行时自定义复杂的 Apollo Gql 查询

我一直在几个查询中使用 @skip 和 @include 指令,虽然它们对于“简单”可定制查询非常有效,但我正在寻找支持高度可定制查询的解决方案。我说的是大约 20 个字段,每个字段都由它自己的单独标志跳过/包含。虽然理论上可以向查询传递 20 个布尔参数并使用@include(if: $the_flag)20 次,但我正在寻找更好的方法来做到这一点。就像传递一个配置对象并包含一些基于其字段的查询部分,或者可能根据每个标志合并来自缝合的查询。

我已经阅读过有关@graphql-tools/stitch的内容,但我不确定我的解决方案是否会通过约 20 针的方式使这种方法受益。是否有任何工具或任何简单的方法可以根据多个条件动态创建高度可定制的查询?

apollo graphql react-apollo apollo-client

5
推荐指数
0
解决办法
129
查看次数