При использовании apollo-сервера с express
я открываю контекст (соединение с базой данных), который необходимо закрыть. Поэтому я делаю это так:
const server = new ApolloServer({
schema,
playground: config.enableGraphiQL,
context: (req: express.Request) => req.res.locals.context
});
const app = express();
app.use((req, res, next) => {
logger.debug('Query start');
res.locals.context = new Context();
next();
res.on("finish", () => {
logger.debug('Query finish');
const context: Context = res.locals.context;
context.connection.close();
});
});
server.applyMiddleware({ app });
При использовании createTestClient
из apollo-server-testing
я не знаю, как его закрыть. Вот код:
const server = new ApolloServerBase({
schema,
context: () => new Context() //// FIXME: not closing
});
const client = createTestClient(server);
Итак, соединение с базой данных не закрыто. Как получить крюк / событие, информирующее о том, что освобождение закончилось?