如何将graphql-iso-date之类的现有GraphQLSchema对象传递给makeExecutableSchema
函数,并将其与字符串定义的类型和解析器函数一起使用?在下面的类型定义中说我希望date
属性来自提到的包中的GraphQLDate
。
import { GraphQLDate, GraphQLTime, GraphQLDateTime } from 'graphql-iso-date';
let typeDefs = [];
typeDefs.push(`
type MyType {
date: Date
}
`);
let resolvers = {
Query: () => { /* ... */ },
};
makeExecutableSchema({ typeDefs, resolvers });
答案 0 :(得分:0)
结果是resolvers
地图,传递给makeExecutableSchema
确实接受GraphQLScalarType
而日期类型是标量。我们仍然需要手动将类型添加到typeDefs
中......
typeDefs.push('scalar Date');
和
resolvers.Date = GraphQLDate;
所以我在我的项目中创建了一个外部标量模块并且正在做
import externalTypes from './externalTypes';
import printType from 'graphql';
// Define my typeDefs and resolvers here
for (let externalType of externalTypes) {
let { name } = externalType;
typeDefs.push(printType(externalType));
resolvers[name] = externalType;
}
makeExecutableSchema({ typeDefs, resolvers });
我通过试用/失败来判断它,然后才在docs找到它,从而发布。此外,我仍然不知道如何以这种方式添加非标量类型(除了手动编写它的类型定义之外)。
同样,printType
函数从传递的类型对象打印模式定义,在这里变得很方便(更多细节见this question)。