我正在使用GraphQL在Apollo服务器上使用Nestjs实现一个框架,我想使用一些自定义的GraphQL标量。我找到了这个网站,https://www.graphql-scalars.dev/docs/quick-start,它有助于导入自定义标量,而无需实际实现它们https://docs.nestjs.com/graphql/scalars#create-a-custom-scalar.具体来说,我想使用BigInt
,Time
和URL
。
从快速开始页面上的文档中,我不确定代码属于哪里。我应该在app. module.ts
中编写代码吗?
// or import specific typeDefs only with ES6 Import
import { ScalarNameTypeDefinition } from 'graphql-scalars';
// or import specific typeDefs only with CommonJS
const { ScalarNameTypeDefinition } = require('graphql-scalars');
// or import all typeDefs once with ES6 Import
import { typeDefs as scalarTypeDefs } from 'graphql-scalars';
// or import all typeDefs once with CommonJS
const { typeDefs: scalarTypeDefs } = require('graphql-scalars');
const typeDefs = [
...scalarTypeDefs,
// other typeDefs
];
// or
const typeDefs = [
ScalarNameTypeDefinition,
// other typeDefs
];
我当前的GraphQLModule:
GraphQLModule.forRoot<ApolloDriverConfig>({
driver: ApolloDriver,
typePaths: ['./**/**/**/*.graphql'],
definitions: {
path: join(process.cwd(), 'src/graphql.ts'),
outputAs: 'class',
},
}),
解析器地图怎么样?代码应该属于哪里?assets. resverver.ts
?我也不明白这段代码属于哪里?
简而言之,如何在Apollo服务器上的Nestjs框架中使用graph ql-calars
包?有没有开源的GitHub存储库可以查看?
看这里NestJs导入自定义标量
这是我的app. module.ts的样子:
import { BigIntResolver, DateResolver, DateTimeResolver } from 'graphql-scalars';
GraphQLModule.forRoot<ApolloDriverConfig>({
driver: ApolloDriver,
typePaths: ['./**/*.graphql'],
definitions: {
path: join(process.cwd(), 'src/graphql/graphql-types.ts'),
customScalarTypeMapping: {
BigInt: 'bigint',
DateTime: 'Date',
},
},
resolvers: {
BigInt: BigIntResolver,
Date: DateResolver,
DateTime: DateTimeResolver,
},
playground: true,
debug: true,
}),
然后在我的. graph ql文件中,我可以使用这些类型:
scalar BigInt
scalar Date
scalar DateTime
input WorkperiodContent {
editedAt: DateTime
startDate: Date
endDate: Date
}
完成此操作后,我可以使用这些新标量在GraphQL Playground上成功运行查询。
您甚至不需要创建自己的自定义标量。您只需导入您需要的三个,您就可以开始了。