尝试从 nuxt 3 中间件连接到 redis 客户端,但连接未定义
P粉512526720
2023-08-30 13:36:47
<p>我正在尝试连接到 Redis 服务器以从 nuxt 3 DefineNuxtRouteMiddleware 中间件获取会话数据,但没有成功。我在服务器端插件中创建了与 redis 的连接,它适用于我的所有 api 端点,但它似乎不适用于我的 rout-guards 中间件。我尝试在下面的代码中获取连接,但连接未定义。我是否错误地假设中间件服务器端执行应该有权访问 Redis 连接</p>
<pre class="brush:php;toolbar:false;">if (process.server) {
let session = await RedisUtil.getConnection.get(sessionID);
}</pre>
<p>下面是redisUtil</p>
<pre class="brush:php;toolbar:false;">class RedisUtil{
static get getConnection(){
return this.connection;
}
static set setConnection(connection){
this.connection = connection;
}
static async connect(config) {
let redis = createClient({
url: 'redis://' + config.redis.user + ':' + config.redis.password + '@' + config.redis.host + ':' + config.redis.port
});
redis.on('error', err => console.log('Redis Client Error', err));
await redis.connect();
RedisUtil.setConnection = redis;
console.log("Connected to redis");
}
}</pre>
<p>redis插件已加载到硝基配置中</p>
<pre class="brush:php;toolbar:false;">import RedisUtil from '../utils/RedisUtil';
import config from "~/server.config"
export default async (NuxtApp) => {
await RedisUtil.connect(config);
};</pre>
<pre class="brush:php;toolbar:false;">nitro: {
plugins: [
"~/server/plugins/redis.js"
],
},</pre>
<p>如上所述,我可以在所有其他服务器端执行中访问redis连接,但不能在中间件中访问。对此的任何帮助将不胜感激。</p>
看来您只在服务器端部分运行 Redis 请求。当客户端路由发生时使其失去上下文。