嘗試從 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 請求。當客戶端路由發生時使其失去上下文。