Есть ли способ сказать makeExecutableSchema из graphql-tools игнорировать определенные директивы?
Я хочу запросить мою базу данных neo4j с помощью graphql.Я также хочу иметь возможность указывать подтипы в graphql.Существует библиотека с именем graphql-s2s, которая добавляет подтипы в graphql.Библиотека neo4j-graphql-js использует пользовательские директивы (@cyper и @relation) для построения расширенной схемы.Он берет typeDefs или executeableSchema из graphql-tools.qraphql-s2s позволяет мне создать исполняемую схему из схемы, содержащей подтипы.Я надеялся, что мне будет легко просто передать различные выходные данные схемы друг в друга, как в шаблоне декоратора.
К сожалению, это не совсем так, поскольку я получаю много сообщений об ошибках анализатора, которыене совсем описательный.
К сожалению, я не нашел никакой документации по Grandstack, где показано, как использовать augmentSchema () для исполняемой схемы с отношениями и шифром в ней.
Есть ли способ, как это сделать?
Ниже моего наивного подхода:
const { transpileSchema } = require('graphql-s2s').graphqls2s;
const { augmentSchema } = require('neo4j-graphql-js');
const { makeExecutableSchema} = require('graphql-tools');
const { ApolloServer} = require('apollo-server');
const driver = require('./neo4j-setup');
/** The @relation and @cypher directives don't make any sense here they are
just for illustration of having directives that make sense to
'augmentSchema' and not to 'makeExecutableSchema' **/
const schema = `
type Node {
id: ID!
}
type Person inherits Node {
firstname: String
lastname: String @relation(name: "SOUNDS_LIKE", direction: "OUT")
}
type Student inherits Person {
nickname: String @cypher(
statement: """ MATCH (n:Color)...some weird cypher query"""
)
}
type Query {
students: [Student]
}
`
const resolver = {
Query: {
students(root, args, context) {
// Some dummy code
return [{ id: 1, firstname: "Carry", lastname: "Connor", nickname: "Cannie" }]
}
}
};
const executabledSchema = makeExecutableSchema({
typeDefs: [transpileSchema(schema)],
resolvers: resolver
})
const schema = augmentSchema(executabledSchema)
const server = new ApolloServer({ schema, context: { driver } });
server.listen(3003, '0.0.0.0').then(({ url }) => {
console.log(`GraphQL API ready at ${url}`);
});