Я интегрировал DataLoaders в мои запросы graphQL, но по какой-то причине кеш запоминается между запросами. Я могу прочитать, что передача функции в контекст в конфигурации ApolloServer должна создавать новый контекст при каждом запросе, но по какой-то причине DataLoaders запоминается даже тогда.
Это мой код
Apollo Config:
export default new ApolloServer({
resolvers,
typeDefs,
context: ({ req, res }) => generateContext(req, res)
});
generateContext:
const generateContext = (req: Express.Request, res: Express.Response) => ({
...generateLoaders(),
res,
req
});
generateLoaders:
import * as questionLoaders from './questionLoaders';
const generateLoaders = () => ({
questionLoaders
});
questionLoader:
const batchQuestions = async (ids: number[]) => {
const questions = await Question.query().findByIds(ids);
return ids.map((id) => questions.find((q) => q.id === id));
};
export const questionLoader = new dataloader((ids: number[]) => batchQuestions(ids));