尝试从 nuxt 3 中间件连接到 redis 客户端,但连接未定义是什么原因呢?

我正在尝试连接到 redis 服务器以从 nuxt 3 defineNuxtRouteMiddleware 中间件获取我的会话数据,但没有成功。我在服务器端插件中创建了与 redis 的连接,它适用于我所有的 api 端点,但它似乎不适用于我的 rout-guards 中间件。我试图在下面的代码中获取连接,但连接未定义。我假设中间件服务器端执行应该可以访问 redis 连接是不正确的

if (process.server) {
     let session =     await RedisUtil.getConnection.    get(sessionID);
}

下面是redisUtil

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");
    }
}

redis 插件加载到 nitro 配置中

import RedisUtil     from '../utils/RedisUtil';
    import config     from "~/server.config"    export     default     async (NuxtApp) => {
        await RedisUtil.connect(config);
};
nitro: {
        plugins: [
                "~/server/plugins/redis.js"
            ],
    },

如上所述,我能够在所有其他服务器端执行中访问 redis 连接,但不能在中间件中访问。对此的任何帮助将不胜感激。

vue.js
redis
middleware
2023-04-21 14:27:11
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
阿卡林95

你似乎只在服务器端部分运行 Redis 请求。当客户端路由发生时,让它失去上下文。

export default defineNuxtRouteMiddleware(    async (to,     from) => {
      let session = '';
      if (process.server) {
    session = 'has some context';
  }

  // server: session = 'has some context'
  // client: session = ''
})
已于2023-4-21 16:43:19修改
分享
微博
QQ
微信
回复
2023-04-21 16:43:10
相关问题
golang redis客户端连接状态
2669浏览 • 1回复 待解决
中间件什么特点有知道的吗?
3437浏览 • 1回复 待解决
开源的中间件能否在PolarDB中使用?
2655浏览 • 1回复 待解决
HarmonyOS项目字段未定义问题
464浏览 • 1回复 待解决
mysql客户端怎么开启预编译?
3195浏览 • 1回复 待解决
地图定位不准,是什么原因啊?
311浏览 • 1回复 待解决
ForEach无法遍历全部数据,是什么原因
1921浏览 • 1回复 待解决
如何使用ssl连接到PolarDB ?
3282浏览 • 1回复 待解决