0

In my config, I have the following: -

expressGraphQL((req, res) => ({
...,
context: {
req,
res,
database,
},
}))

I would like to be able to pass res to a custom function in the context, like so: -

expressGraphQL((req, res) => ({
...,
context: {
req,
res,
database,
myCustomFunction: (res) => {
// do something with res object here
}
}))

However, when I get myCustomFunction from the context within a resolver and run is, res is undefined.

I am aware I can pull res out of the context along with myCustomFunction and invoke myCustomFunction(res) but I would like to just be able to do myCustomFunction().

Is there any way I can do this? Thanks.

U4EA
  • 832
  • 1
  • 12
  • 27

1 Answers1

1

Since you're defining the function inside of a function that is already passed res as a parameter, just use that parameter. That means you should remove the res argument from myCustomFunction's signature, otherwise you end up shadowing the res variable you actually mean to use.

expressGraphQL((req, res) => ({
  ...,
  context: {
    ...
    myCustomFunction: () => {
      console.log(res)
    },
  },
}))

You can define myCustomFunction in a different scope too, in which case you would do:

function myCustomFunction (res) {
  console.log(res)
}

expressGraphQL((req, res) => ({
  ...,
  context: {
    ...
    myCustomFunction: () => myCustomFunction(res),
  },
}))
Daniel Rearden
  • 80,636
  • 11
  • 185
  • 183