howto change/extend express-graphql context without recreating the request handler ?
/** */
const schema = makeExecutableSchema({
typeDefs,
resolvers,
});
/** */
export default (req: any, res: any, context: any) => {
console.log("context:", context);
const handler = graphqlHTTP({
schema,
graphiql: process.env.NODE_ENV !== "production",
context: {
req,
...context,
},
});
return handler(req, res);
};
I noticed graphqlHTTP accepts a promise for options.
Not sure how is this going to help.
as the (req)=> Promise<Otions>
(options-callback) would need to be built again for every request anyway ?
mI missing something ?
NOTE: please ignore the context building implementation it could be anything you like
This seems to do the trick, partially...
/** */
const handler = graphqlHTTP(async (req: any) => {
return {
schema,
graphiql: process.env.NODE_ENV !== "production",
/** this doesn't work */
context: {
req,
session: await getSession({ req }),
},
};
});
but all the context dependencies need to be declared upfront. Rebuilding the callback will require to build the handler.
Thanks