graphql-compose-mongoose icon indicating copy to clipboard operation
graphql-compose-mongoose copied to clipboard

withMiddlewares does not fire within a custom resolver

Open tasoskakour opened this issue 3 years ago • 1 comments

Take a look at the code blocks below.

In the first code block, the myMiddleware never executes. The reason I added the withMiddlewares property inside that object is because it's part of the Resolver.d.ts file so I assumed that this is the correct place to add middlewares for a custom resolver and technically this should have worked.

In the second code block the myMiddeware executes correctly.

First code block (middleware does not fire)

const UserTC = composeMongoose(User);

schemaComposer.Query.addFields({
	myCustomResolver: {
		args: {},
		type: UserTC.getType(),
		resolve: userGetMe,
                withMiddlewares: [myMiddleware]
      }
});

Second code block (middleware fires OK)

const UserTC = composeMongoose(User);

schemaComposer.Query.addFields({
	myCustomResolver: UserTC.addResolver({
                args:{},
		name: 'userGetMe',
		type: UserTC.getType(),
		resolve: userGetMe,
		description: 'Returns current logged in user based on Authorization headers.',
	})
		.getResolver('userGetMe')
		.withMiddlewares([myMiddleware]),
});

tasoskakour avatar Apr 09 '21 12:04 tasoskakour

withMiddlewares is method of Resolver, you can chaining withMiddlewares with your resolver resolve: userGetMe.withMiddlewares([myMiddleware]) if userGetMe is instance of Resolver.

if you use object in addFields = type of ObjectTypeComposerFieldConfigAsObjectDefinition

yurtaev avatar Apr 09 '21 13:04 yurtaev