如何在没有 GraphQL 模式语言的情况下定义上传标量?

How to define Upload scalar without GraphQL Schema Language?

有一个示例代码,其中使用 GraphQL 模式语言定义上传标量:

import { makeExecutableSchema } from 'graphql-tools'
import { GraphQLUpload } from 'apollo-upload-server'

const typeDefs = `
  scalar Upload
`

const resolvers = {
  Upload: GraphQLUpload
}

export const schema = makeExecutableSchema({ typeDefs, resolvers })

如果没有 GraphQL Schema 语言,我们如何做同样的事情?

您可以创建一个 GraphQLSchemaType 对象。

const uploadType = new GraphQLScalarType({ name: "Upload" });

然后您必须将其用作 GraphQLFieldGraphQLInputObjectField 对象的类型。

(根据我的经验,GraphQL 模式语言比构建语言原生对象模型更紧凑和可读,实际上我会坚持使用问题中的形式。)