标签: graphql-tools

如何在 Apollo graphql 中添加联合类型

我创建了这个问题,以防有人对如何在 Apollo 中添加联合/多态类型感到好奇。希望这会让他们更容易。

在此示例中,我希望响应为 aWorksheetApiError

// typedefs.js
export default [`
  schema {
    query: Query
  }

  type Query {
    worksheet(id: String!): Worksheet | Error
  }

  type Worksheet {
    id: String!
    name String
  }

  type ApiError {
    code: String!
    message: String!
  }
`];

// resolvers.js
export default {
  Query: {
    worksheet(_, args, { loaders }) {
      return loaders.worksheet.get(args.id).catch(() => {
        // ApiError
        return {
          code: '1',
          message: 'test'
        }
      });
    }
  }
};

// Express Server 
import …
Run Code Online (Sandbox Code Playgroud)

apollo graphql-js apollo-server react-apollo graphql-tools

4
推荐指数
1
解决办法
4298
查看次数

`不能使用来自另一个模块或领域的“__Schema”。` 和使用 ApolloClient 的`复制“graphql”模块`

我有一个带有 ApolloClient 和 Apollo-Link-Schema 的 React 应用程序。该应用程序在本地运行良好,但在我们的临时环境(使用 GOCD)中,我们收到以下错误:

Uncaught Error: Cannot use e "__Schema" from another module or realm.

Ensure that there is only one instance of "graphql" in the node_modules
directory. If different versions of "graphql" are the dependencies of other
relied on modules, use "resolutions" to ensure only one version is installed.

https://yarnpkg.com/en/docs/selective-version-resolutions

Duplicate "graphql" modules cannot be used at the same time since different
versions may have different capabilities and behavior. The data from one
version used …
Run Code Online (Sandbox Code Playgroud)

graphql react-apollo apollo-client graphql-tools apollo-link

4
推荐指数
2
解决办法
2422
查看次数

graphql-type-json 导出的 GraphQLJSON 和 GraphQLJSONObject 有什么区别?

来自官方包文档:

GraphQLJSON 可以表示任何 JSON 可序列化的值,包括标量、数组和对象。GraphQLJSONObject 专门表示 JSON 对象,它涵盖了 JSON 标量的许多实际用例。

这听起来有点令人困惑,因为对我来说,这两个定义似乎非常相似。有人可以通过一个例子帮助我更好地理解这一点吗?谢谢期待。

https://www.npmjs.com/package/graphql-type-json

json graphql graphql-js express-graphql graphql-tools

4
推荐指数
1
解决办法
2316
查看次数

无法让 Graphql 工具读取我的 schema.graphql 文件

我正在使用 Apollo-server-express 和 Graphql-tools。我已经翻遍了 Graphql-tools 文档,但我无法让它发挥作用。我试图让我的 schema.graphql 文件作为我的 typeDefs 导入。Graphql-tools 似乎应该使这变得容易,但有些事情并没有到位。

索引.js

const { ApolloServer } = require("apollo-server-express");
const { makeExecutableSchema } = require('@graphql-tools/schema');
const express = require("express");
const { join } = require("path");
const { loadSchema } = require("@graphql-tools/load");
const { GraphQLFileLoader } = require("@graphql-tools/graphql-file-loader");
const { addResolversToSchema } = require("@graphql-tools/schema");
const app = express();

const resolvers = {
  Query: {
    items: (parent, args, ctx, info) => {
      return ctx.prisma.item.findMany();
    },
  },
  Mutation: {
    makeItem: (parent, args, context, info) …
Run Code Online (Sandbox Code Playgroud)

javascript graphql apollo-server graphql-tools

3
推荐指数
1
解决办法
1336
查看次数

合并模式后“GraphQLError:在类型中找不到字段:'query_root'”

我使用 graphql-tools 缝合了两个 graphql 端点。使用一个端点架构它工作正常,但使用另一个架构它会抛出此错误“GraphQLError:在类型中找不到字段:'query_root'”。即使我可以在内省时看到所有模式。

    const createRemoteExecutableSchemas = async () => {
        let schemas = [];
        for (let api of graphqlApis) {
            const http =  http_link.HttpLink({
                uri: api.uri,
                fetch:fetch
            });
            const link1 = setContext.setContext((request, previousContext) => {
                return {
                    headers:{authorization: previousContext.graphqlContext.headers.authorization}
                }
            }).concat(http);

            const link2 = setContext.setContext((request, previousContext) => ({
                headers: {
                    'x-hasura-admin-secret': api.secret
                }
              })).concat(http);
            const remoteSchema = await gtool.introspectSchema(link2);
            const remoteExecutableSchema =  gtool.makeRemoteExecutableSchema({
                schema: remoteSchema,
                link:link1
            });
            schemas.push(remoteExecutableSchema);
        }
        return schemas;
    };

    const createNewSchema = async () => …
Run Code Online (Sandbox Code Playgroud)

schema nodes graphql apollo-server graphql-tools

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