标签: apollo

如何使用Apollo-Client为请求设置超时

我有一个React-Native应用程序,我向GraphQL服务器发出请求.一切正常,但我需要一种方法将请求/客户端的超时设置为5或10秒.目前,该请求需要很长时间才能超时(大约1分钟).

这是我如何使用客户端的快速示例.

const client = new ApolloClient({
  networkInterface: createNetworkInterface({
    uri: `${config.server_hostname}/graphql`
  })
});

client.query({ query: gqlString });
Run Code Online (Sandbox Code Playgroud)

我无法通过StackOverflow,谷歌搜索或Apollo的文档找到任何解决方案.

javascript apollo graphql react-native apollo-client

6
推荐指数
1
解决办法
4660
查看次数

为什么Apollo Server不是Express的中间件,而不是一个接受Express作为中间件的服务器?

我只是想知道这个看似笨拙的配置是什么原因(来自Apollo Server的入门),

const server = new ApolloServer({
  // These will be defined for both new or existing servers
  typeDefs,
  resolvers,
});

server.applyMiddleware({ app }); // app is from an existing express app
Run Code Online (Sandbox Code Playgroud)

为什么我正在打电话.applyMiddleware()给我app而不是使用app.use()它,甚至似乎从文档来看,Apollo只是回答请求/graphql而不是更好地遵循Express API,

let apollo = require('apollo-server').ApolloMiddleware
app.use( '/graphql', apollo({ typeDefs, resolvers }) );
Run Code Online (Sandbox Code Playgroud)

似乎Apollo正在颠覆Express的正常中间件流程?采用阿波罗方式的优势是什么?

middleware express apollo graphql

6
推荐指数
1
解决办法
318
查看次数

Relay/Apollo片段的粒度应该是多少?

我在我的应用程序中使用GraphQL + Relay,发现自己几乎包含了所有组件createFragmentContainer,包括DOM层次结构中非常低的组件(通常是功能组件).

这是使用片段的正确方法吗?我想知道何时在片段容器中包装组件的准则是什么?当一个组件只需要一个字段并且我可以通过props从父节点传递那些数据时,似乎是多余的.

我正在使用Relay,但我认为这些概念与Apollo相似.

relay apollo reactjs graphql relayjs

6
推荐指数
2
解决办法
143
查看次数

Apollo不可分配给'VueClass <Vue>类型的参数

我正在使用打字稿构建nuxt.js应用程序。这是我的代码:

<script lang='ts'>
    import {Component, Vue} from 'nuxt-property-decorator';
    import {LOCATION} from '~/constants/graphql/location';

    @Component({
        apollo: {
            getLocation: {
                query: LOCATION,
                variables(): object {
                    return {
                        id: 10,
                    };
                },
                prefetch: true,
            },
        },
    })
    export default class Home extends Vue {
    }
</script>
Run Code Online (Sandbox Code Playgroud)

我有错误:

Argument of type '{ apollo: { getLocation: { query: any; variables(): object; prefetch: boolean; }; }; }' is not assignable to parameter of type 'VueClass<Vue>'.
Run Code Online (Sandbox Code Playgroud)

对象文字只能指定已知的属性,而'apollo'在'VueClass'类型中不存在。

我知道它来自TS,但如何解决?

javascript typescript apollo vue.js nuxt

6
推荐指数
1
解决办法
335
查看次数

在 GraphQL 参数化查询中使用 ID

我有以下架构:

type Post {
  id: ID!
  text: String
}
Run Code Online (Sandbox Code Playgroud)

我正在使用自动生成的突变neo4j-graphql.js,因此我可以访问以下突变:

UpdatePost(
id: ID!
text: String
): Post
Run Code Online (Sandbox Code Playgroud)

问题:

当我使用以下查询时:

mutation update($id: String, $text: String) {
  UpdatePost(id: $id, text: $text) {
    id
    text
  }
}
Run Code Online (Sandbox Code Playgroud)

具有以下参数:

{
  "id": "a19289b3-a191-46e2-9912-5a3d1b067cb2",
  "text": "text"
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

{
  "error": {
    "errors": [
      {
        "message": "Variable \"$id\" of type \"String\" used in position expecting type \"ID!\".",
        "locations": [
          {
            "line": 1,
            "column": 17
          },
          {
            "line": 2,
            "column": 18
          }
        ],
        "extensions": {
          "code": …
Run Code Online (Sandbox Code Playgroud)

apollo graphql grandstack

6
推荐指数
1
解决办法
1万
查看次数

如何通过 Apollo Client 在 NodeJS 中进行 GraphQL 订阅?

我想订阅 GraphQL 服务器。该应用程序在 NodeJS 脚本中运行(即不在网络浏览器中)。

这是我目前所做的:

const fetch = require("node-fetch").default;
const apollo = require("apollo-boost");
const ApolloClient = apollo.default;
const { gql } = require("apollo-server");

const apolloClient = new ApolloClient({
  uri: "http://localhost:4000/graphql",
  fetch
});

apolloClient.subscribe({
  query: gql`
    subscription {
      startTaskRequested {
        pkRobot
        taskName
      }
    }
  `,
}).subscribe({
  next(x) { console.log(x) },
  error(err) { console.log(`Finished with error: ${ err }`) },
  complete() { console.log('Finished') }
});
Run Code Online (Sandbox Code Playgroud)

结果输出是:

{ data: { startTaskRequested: null } }
Finished
Run Code Online (Sandbox Code Playgroud)

在 GraphQL Server 上,我可以看到相应的解析器从未被调用。

如果我使用 Apollo 的 …

node.js apollo graphql graphql-subscriptions apollo-client

6
推荐指数
1
解决办法
1957
查看次数

如何有条件地运行 Apollo 客户端的 useSubscription 钩子?

有人尝试过有条件调用吗useSubscription?我想在完成useSubscription后立即打电话。useLazyQuery例如,当我填充数据表时,应useLazyQuery在表中显示获取的数据后立即调用订阅。以便表保持更新。useLazyQuery在安装组件时调用。如果有,请与我分享您的解决方案。谢谢!

apollo reactjs graphql react-hooks

6
推荐指数
0
解决办法
1478
查看次数

Apollo 在同一组件下挂钩 useQuery 和 useMutation

我最近刚刚开始学习 GraphQL 和 React-Apollo,我想知道如果我需要在同一个组件中使用useQuery和挂钩,推荐的使用方法是什么。useMutation由于两个钩子都返回{data, loading, error}对象,因此名称存在冲突。我应该在解构时为属性分配唯一的名称,还是将逻辑移动到单独的容器组件更好?

apollo reactjs graphql react-apollo react-apollo-hooks

6
推荐指数
0
解决办法
1344
查看次数

将根组件包装在 &lt;ApolloProvider&gt; 中后,在测试中找不到“客户端”

我有一个带有 React 和 Apollo Client 的前端,并且正在尝试编写一些简单的测试。

我的应用程序如下所示:

ApolloProvider.js

import React from "react"
import App from "./App"
import ApolloClient from "apollo-client"
import { InMemoryCache } from "apollo-cache-inmemory"
import { createHttpLink } from "apollo-link-http"
import { ApolloProvider } from "@apollo/react-hooks"
import { setContext } from "apollo-link-context"

const httpLink = createHttpLink({
  uri: "...backend....",
})

const authLink = setContext(() => {
  const token = localStorage.getItem("jwtToken")
  return {
    headers: {
      Authorization: token ? `Bearer ${token}` : "",
    },
  }
})

const client = new ApolloClient({ …
Run Code Online (Sandbox Code Playgroud)

apollo reactjs react-apollo apollo-client react-testing-library

6
推荐指数
1
解决办法
5709
查看次数

GraphQL/Apollo 应用程序,可从服务器下载文件

我对 GraphQL 有点陌生,这个问题属于“它不可能这么难。我必须遗漏一些东西。”

我有一个相当标准的 GraphQL/Apollo/React 应用程序,分为客户端和服务器。客户端调用 API 并从服务器获取数据时,一切都运行良好。客户端甚至可以将文件上传到服务器。但是,我现在需要服务器流回保存在磁盘上的文件。就是这样。

这是“我必须遗漏一些东西”的部分。我在文档和 Stackoverflow 上看到的所有内容都是从服务器推回文件并通过 GraphQL 查询作为 Base64 编码的字符串,然后在客户端上执行一些非常 hacky 的操作,通常涉及隐藏的 href 标签和模拟点击。对此我说:“什么???”

严重地。磁盘上有服务器知道如何查找的文件。客户端需要向用户显示一个按钮,用户可以单击该按钮来下载文件。就是这样。所有其他语言的其他框架都有一个简单的方法来做到这一点。有人可以告诉我我在这里缺少的极其简单的事情吗?

谢谢,亚历克斯

apollo reactjs graphql

6
推荐指数
1
解决办法
4395
查看次数