标签: apollo-server

如何在Graphql Schema中表示Neo4j关系属性?

我有一个Neo4j数据库,其关系具有[:FRIENDS {since:"11/2015"}]等属性.我需要在GraphQl Schema中表示"since"属性.RELAY有一些称为"边缘"的东西显然这是他们实现这个功能的方式,但我没有使用RELAY .....我在Apollo中没有看到任何东西(也许我错过了它).有人能告诉我怎么做吗?

neo4j graphql apollo-server

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

ApolloGraphQL:非Web套接字订阅吗?

我们有一个应用实质上可以准确地实现本指南:

https://www.apollographql.com/docs/apollo-server/features/subscriptions/

太好了 我们取得了巨大的成功,该应用程序也表现出色。

但是,我们开始遇到的是各种大型公司阻止其内部员工的Web套接字的情况。当我们尝试升级到Web套接字时,它们返回403。

我一直在四处搜寻,但对于非Web套接字订阅,在Apollo社区中没有看到太多东西。一切指南/文章/示例均基于Web套接字。

理想情况下,我会使用socket.io之类的方法,这种方法可以回溯到长时间轮询,这是我一直在考虑的解决方案。但是每个人都只使用subscriptions-transport-ws库(我们使用它)。我找到了一个过时的库,称为subscriptions-transport-sse,但犹豫要尝试它,而我的服务器设置将需要大量重构。我们使用nestjs和Apollo GraphQL模块。

还有其他人解决过如何回退到其他运输方式吗?我实际上是在尝试避免编写自己的脚本,但看起来是那样选择还是切换到内置了它的另一个框架?

谢谢。

graphql apollo-server apollo-client nestjs

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

自动重新加载网关以适应联合服务 apollo GraphQL 中的架构更改

在 Apollo Federation 中,我面临这样的问题:每次我们对服务列表中的任何联合服务的架构进行更改时,都需要重新启动网关。据我所知,每次网关启动时,它都会收集所有架构并聚合数据图。但是有没有一种方法可以在不重新启动网关的情况下自动处理此问题,因为它也会关闭所有其他不受影响的 GraphQL 联合服务

Apollo GraphQL,@apollo/gateway

graphql apollo-server apollo-federation

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

通过 Apollo Server (NestJS) 处理异常

有没有办法通过 apollo 异常处理程序手动运行异常?

我 90% 的应用程序都在 GraphQL 中,但仍然有两个 REST 模块,我想统一处理异常的方式。

因此,GQL 查询会抛出标准的 200 错误数组,其中包含消息、扩展名等。

{
  "errors": [
    {
      "message": { "statusCode": 401, "error": "Unauthorized" },
      "locations": [{ "line": 2, "column": 3 }],
      "path": [ "users" ],
      "extensions": {
        "code": "INTERNAL_SERVER_ERROR",
        "exception": {
          "response": { "statusCode": 401, "error": "Unauthorized" },
          "status": 401,
          "message": { "statusCode": 401, "error": "Unauthorized" }
        }
      }
    }
  ],
  "data": null
}
Run Code Online (Sandbox Code Playgroud)

其中 REST 使用 JSON 抛出真正的 401:

{
    "statusCode": 401,
    "error": "Unauthorized"
}
Run Code Online (Sandbox Code Playgroud)

那么我可以简单地捕获异常并以 Apollo …

exception node.js graphql apollo-server nestjs

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

测试扩展类时开玩笑模拟 ES6 基类的方法(超级方法)

在测试扩展类时,测试使用某些参数调用原始方法(来自基类)时遇到问题。我要测试的类是:

// ApiDataSource.js
import { RESTDataSource } from "apollo-datasource-rest";

export default class ApiDataSource extends RESTDataSource {
  constructor() {
    super();
    this.baseURL = 'test';
  }

  //We add the authorization params to the get method
  async get(path, params = {}, init = {}) {
    return super.get(
      path,
      {
        ...params,
        app_id: "test app id",
        app_key: "test app key",
      },
      init
    );
  }
}

Run Code Online (Sandbox Code Playgroud)

基本上,我想模拟super.get()断言,当ApiDataSource.get()被调用时,super会使用授权参数调用该方法。

就像是:

// ApiDataSource.test.js
import ApiDataSource from './ApiDataSource'

// ...
test("adds the authorization parameters to …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing jestjs apollo-server

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

是否可以将 apollo-server-express 部署到 lambda?

我有一个使用 apollo-server-express 实现的后端项目。我研究了如何将其部署到 lambda,发现我需要使用 apollo-server-lambda 来实现此目的。

我不熟悉 GraphQL 和 AWS lambda。我不知道这两个包之间的区别 - apollo-server-express 和 apollo-server-lambda。

有没有简单的方法将 apollo-server-express 转换为 apollo-server-lambda?

或者是否可以将此实现直接部署到 AWS lambda?

我尝试使用无服务器部署这个项目,因为它是一个简单的快速应用程序,但它因 6 秒超时而失败。

express aws-lambda graphql apollo-server

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

Apollo Server:在上下文中抛出错误总是会在客户端返回 http 400 错误

所以,我在我的 iOS 应用程序中运行了一个 apollo 服务器和一个 apollo 客户端。

我正在尝试实施身份验证过程。按照阿波罗有关授权和身份验证的文档,我最终尝试了他们提供的代码:


context: ({ req }) => {
    throw new AuthenticationError('you must be logged in');
},
Run Code Online (Sandbox Code Playgroud)

但是,在测试代码时,我发现抛出错误,无论是 javascript 错误还是 apollo 错误,它总是会发回 http 400 错误:

Error: Response not successful: Received status code 400
    at new ApolloError (errors.cjs.js:31)
    at core.cjs.js:1493
    at both (utilities.cjs.js:963)
    at utilities.cjs.js:956
    at tryCallTwo (core.js:45)
    at doResolve (core.js:200)
    at new Promise (core.js:66)
    at Object.then (utilities.cjs.js:956)
    at Object.error (utilities.cjs.js:964)
    at notifySubscription (Observable.js:140)
Run Code Online (Sandbox Code Playgroud)

认证错误不会被发回。即使当我抛出自定义错误时,使用自定义状态代码和所有内容它总是返回相同的错误。

难道我做错了什么 ?或者这是一个问题?

javascript apollo graphql apollo-server apollo-client

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

无法从 graphql-tools 导入 IResolvers

import { IResolvers } from "graphql-tools"; 我试图从 graphql-tools 导入 IResolvers 并收到消息 Module: '"../node_modules/graphql-tools"' has no returned member 'IResolvers'

我的依赖项是:“apollo-server-express”:“^ 3.1.2”,“graphql”:“^ 15.5.1”,“graphql-tools”:“^ 8.1.0”

这是因为我使用的是 apollo 3 而不是具有 IResolver 的 apollo 2 吗?

typescript apollo graphql apollo-server graphql-tools

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

在生产模式下是否有禁用游乐场的选项?

apollo v3 中是否有任何选项可以在生产模式下禁用游乐场?在 v2 中,您可以通过传递playground: false给 ApolloServer 选项来禁用它,但在 v3 中找不到任何选项。

我正在使用 apollo-server-fastify。

编辑:我已禁用游乐场,但我仍然可以访问 localhost:4000/graphql 并收到此消息:

GET query missing.
Run Code Online (Sandbox Code Playgroud)

我的代码:

const app = fastify({ trustProxy: true });
const server = new ApolloServer({
  schema,
  context: ({ request }: { request: FastifyRequest }) => {
    const auth = request.headers.authorization || "";
    return {
      auth,
      session: request.session,
      sessionStore: request.sessionStore,
    };
  },
  plugins: [
    myPlugin,
    env === "production"
      ? ApolloServerPluginLandingPageDisabled()
      : ApolloServerPluginLandingPageGraphQLPlayground(),
  ],
});
const corsOptions = {
  origin: true,
  optionsSuccessStatus: 200,
  credentials: …
Run Code Online (Sandbox Code Playgroud)

apollo apollo-server fastify

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

如何在Nestjs代码优先中设置Apollo的cacheControl指令

我正在尝试在某些字段上设置静态cacheControl,如此处所示

根据我的理解,我需要使用指令,因此我使用以下嵌套文档来声明指令

因此,我构建了一个 cacheControl 指令,这就是我的 GraphQLModule.forRootAsync 在 buildSchemaOptions 中的内容:

buildSchemaOptions: {
        directives: [
          new GraphQLDirective({
            name: 'cacheControl',
            locations: [
              DirectiveLocation.FIELD_DEFINITION,
              DirectiveLocation.OBJECT,
              DirectiveLocation.INTERFACE,
              DirectiveLocation.UNION
            ],
            args: {
              maxAge: { type: GraphQLInt },
              scope: {
                type: new GraphQLEnumType({
                  name: 'CacheControlScope',
                  values: {
                    PUBLIC: {
                      astNode: {
                        kind: 'EnumValueDefinition',
                        description: undefined,
                        name: {
                          kind: 'Name',
                          value: 'PUBLIC'
                        },
                        directives: []
                      }
                    },
                    PRIVATE: {
                      astNode: {
                        kind: 'EnumValueDefinition',
                        description: undefined,
                        name: {
                          kind: 'Name',
                          value: 'PRIVATE'
                        },
                        directives: []
                      } …
Run Code Online (Sandbox Code Playgroud)

cache-control code-first graphql apollo-server nestjs

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