GraphQL 渐进学习 03-GraphQL-scalar-自定义类型
目标
代码
步骤
1. 引用 graphql
graphql/language
const {GraphQLScalarType} = require('graphql')
const {Kind} = require('graphql/language')
2. 编写 typeDefs
const typeDefs = `
###
自定义日期类型
###
scalar Date
type Notice {
content: String!
###
消息时间
###
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
})
参考
网友评论