我使用带有typescript-mongodb插件的graphql-codegen从qraphql schema生成数据库模型文件。因此,我的模式包含来自typescript-mongodb的自定义指令,如@entity和@column。代码生成器工作得很好,但是当我使用graphql-tools loadSchemaSync函数加载模式时,我得到了一个模式验证错误,它抱怨未知的指令。
可能最简单的解决方案是将mongo插件指令定义添加到模式中(我也还不能正常工作)。但是在graphql-codegen生成配置文件之后,实际上没有任何理由在模式中包含这些指令。
因此,我想知道在将模式文件加载到可执行模式之前,是否有一些标准的方法可以从模式中删除与mongo相关的指令,作为中间步骤?
或者,有没有办法告诉loadSchemaSync函数忽略“未知指令”错误?
下面是我加载模式文件的当前代码:
import { join } from "path";
import {loadSchemaSync, GraphQLFileLoader} from "graphql-tools"
const schema = loadSchemaSync(join(__dirname, '../src/graphql/schemas/**/*.graphql'), {
loaders: [
new GraphQLFileLoader()
]
})发布于 2021-10-07 23:41:06
听起来您还没有将mongo codegen指令导入到您的模式中。
您应该知道graphql-tools已被弃用,不会再接收更新。您应该使用适当的作用域软件包,例如:https://www.npmjs.com/package/@graphql-codegen/typescript-mongodb
查看文档中的用法示例。
https://www.graphql-code-generator.com/docs/plugins/typescript-mongodb#usage-example
import { makeExecutableSchema } from '@graphql-tools/schema';
import { DIRECTIVES } from '@graphql-codegen/typescript-mongodb';
const schema = makeExecutableSchema({
typeDefs: [
DIRECTIVES,
// the rest of your GraphQL types
],
resolvers,
});https://stackoverflow.com/questions/68053871
复制相似问题