Хотя в массиве fieldNodes
есть свойство directives
для объекта FieldNode
, насколько мне известно, оно не заполнено директивами, применимыми к этому конкретному полю.
Директивына самом деле не предназначены для использования в качестве флага для чего-то, на что можно ссылаться в преобразователе (на уровне схемы или иным образом).Вы можете рассмотреть возможность перемещения вашей логики в функцию visitFieldDefinition
директивы:
const { defaultFieldResolver } = require('graphql')
const { SchemaDirectiveVisitor } = require('graphql-tools')
class PublicDirective extends SchemaDirectiveVisitor {
visitFieldDefinition(field) {
const { resolve = defaultFieldResolver } = field
field.resolve = async function (source, args, context, info) {
if (someCondition) {
throw new SomeError()
}
return resolve.apply(this, [source, args, context, info])
}
}
}
const schema = makeExecutableSchema({
typeDefs,
resolvers,
schemaResolvers: {
public: PublicDirective,
},
})