如何为类型加上别名(例如字符串,整数...)

时间:2019-11-25 19:34:55

标签: graphql

我从文档中知道我可以alias a field。但是我该如何别名呢?

例如我如何别名一个int或字符串类型? type MyStringType = String可以工作吗?

动机

我有一个signin变异,返回了一个auth令牌,我想写一些类似的东西:

type Mutation {
    signin(email: String!, password: String!): AuthToken
}
type AuthToken = String

1 个答案:

答案 0 :(得分:0)

GraphQL不支持类型别名。

但是,您可以实现具有与现有标量相同的属性但名称不同的自定义标量。从您的问题尚不清楚您正在使用哪种语言或库,但是在GraphQL.js中,您可以执行以下操作:

const { GraphQLString, GraphQLScalarType } = require('graphql')
const AuthToken = new GraphQLScalarType({
  name: 'AuthToken',
  description: 'Your description here',
  serialize: GraphQLString.serialize,
  parseValue: GraphQLString.parseValue,
  parseLiteral: GraphQLString.parseLiteral,
})

这里是add a custom scalar in Apollo Server的操作方法。请记住,这样做实际上会使客户感到困难,尤其是那些以强类型语言编写的客户。如果您不需要自定义序列化或解析行为,我会坚持使用内置标量。