尝试从 nuxt 3 中间件连接到 redis 客户端,但连接未定义
P粉512526720
P粉512526720 2023-08-30 13:36:47
[Vue.js讨论组]

我正在尝试连接到 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插件已加载到硝基配置中

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连接,但不能在中间件中访问。对此的任何帮助将不胜感激。

P粉512526720
P粉512526720

全部回复(1)
P粉098979048

看来您只在服务器端部分运行 Redis 请求。当客户端路由发生时使其失去上下文。

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

  // server: session = 'has some context'
  // client: session = ''
})
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号