GraphQL 渐进学习 03-GraphQL-scalar-自定义类型
GraphQL 渐进学习 03-GraphQL-scalar-自定义类型
目标
- 编写自定义类型
代码
步骤
1. 引用 graphql graphql/language
const {GraphQLScalarType} = require('graphql')
const {Kind} = require('graphql/language')
GraphQLScalarType用来声明ScalarKind类型检查
2. 编写 typeDefs
const typeDefs = `
###
自定义日期类型
###
scalar Date
type Notice {
content: String!
###
消息时间
###
noticeTime: Date!
}
`
###...###是注释scalar Date定义了自定义类型Notice.noticeTime字段使用自定义Date类型
3. 编写 resolvers
const resolvers = {
Date: new GraphQLScalarType({
name: 'Date',
description: 'Date custom scalar type',
parseValue(value) {
return new Date(value) // value from the client
},
serialize(value) {
// return new Date(value).getTime()
return new Date(value) // value sent to the client
},
parseLiteral(ast) {
if (ast.kind === Kind.INT) {
return parseInt(ast.value, 10) // ast value is always in string format
}
return null
}
})
}
resolvers中需要详细声明parseValue(value) {...客户端输入serialize(value) {...打印给客户端parseLiteral(value) {...检查类型
4. 合并 Schema
const schema = makeExecutableSchema({
typeDefs,
resolvers
})