node.js - 如何使用 apollo-server-cache 在外部获取缓存数据?
问题描述
和在GraphQL系统中运行apollo-server-cache
良好。apollo-server-plugin-response-cache
apollo-server
现在,我想在外面获取缓存的数据,但仍然使用apollo-server-cache
. “外部”意味着在 REST API 或 pubsub 事件处理程序中获取缓存数据。代码在这里:
server.ts
:
import { ApolloServer, makeExecutableSchema } from 'apollo-server-express';
import express from 'express';
import responseCachePlugin from 'apollo-server-plugin-response-cache';
import { typeDefs } from './typeDefs';
import { resolvers } from './resolvers';
import { context } from './context';
import http from 'http';
import { cache } from './cache';
async function createServer(): Promise<http.Server> {
const port = process.env.PORT || 3001;
const app = express();
const graphqlPath = '/graphql';
const schema = makeExecutableSchema({ typeDefs, resolvers });
const server = new ApolloServer({
schema,
context,
plugins: [responseCachePlugin()],
cacheControl: {
defaultMaxAge: 30,
},
cache,
});
app.get('/test-cache', (req, res) => {
const val = cache.get('?');
});
server.applyMiddleware({ app, path: graphqlPath });
return app.listen(port, () => {
console.log(`Apollo server is listening on http://localhost:${port}${graphqlPath}`);
});
}
export { createServer };
cache.ts
:
import { RedisCache } from 'apollo-server-cache-redis';
const cache = new RedisCache({
port: Number.parseInt(process.env.REDIS_PORT || '6379', 10),
host: process.env.REDIS_HOST || '127.0.0.1',
family: 4,
db: process.env.REDIS_DB || 0,
});
export { cache };
如您所见,我想在/test-cache
REST API 中获取缓存的数据。问题是我不知道缓存键。缓存键是根据graphql请求计算的,源码。这可能吗?我应该如何在外面使用缓存的apollo-server
数据GraphQL
?
解决方案
推荐阅读
- algorithm - 最大匹配算法改进
- python - 我做错了什么使我的 Keras model.fit 不断抛出错误吗?
- python - 查找坐标列表是否形成循环
- java - 如何使用 JUnit 4 在 Java 控制台应用程序中测试循环的 mainManu 方法?
- css - 覆盖网页的 CSS
- php - Laravel 分页:为什么有些页面返回未定义的偏移量:0?
- python - 从组合框中选择数据位
- terraform - 地形 | 从 Cloud SQL 检索(客户端密钥)证书
- swift - 如何等待递归直到函数完成执行
- python-3.x - 非递归最高效的 Big-O 置换算法 Python3(非内置)