J'essaie de me connecter au client Redis à partir du middleware Nuxt 3 mais la connexion n'est pas définie
P粉512526720
2023-08-30 13:36:47
<p>J'essaie de me connecter à un serveur Redis pour obtenir les données de session du middleware nuxt 3 DefineNuxtRouteMiddleware sans succès. J'ai créé une connexion à Redis dans le plugin côté serveur et cela fonctionne pour tous mes points de terminaison API, mais cela ne semble pas fonctionner pour mon middleware rout-guards. J'essaie d'obtenir la connexion dans le code ci-dessous mais la connexion n'est pas définie. Ai-je tort de supposer que l'exécution côté serveur middleware devrait avoir accès à la connexion Redis</p>
<pre class="brush:php;toolbar:false;">if (process.server) {
let session = wait RedisUtil.getConnection.get(sessionID);
}</pré>
<p>Ce qui suit est redisUtil</p>
<pre class="brush:php;toolbar:false;">class RedisUtil{
statique obtenir getConnection(){
renvoie cette.connexion ;
}
ensemble statique setConnection(connexion){
this.connection = connexion ;
}
connexion asynchrone statique (config) {
laissez redis = createClient({
URL : 'redis://' + config.redis.user + ':' + config.redis.password + '@' + config.redis.host + ':' + config.redis.port
});
redis.on('erreur', err => console.log('Erreur client Redis', err));
attendre redis.connect();
RedisUtil.setConnection = redis;
console.log("Connecté à Redis");
}
}</pré>
<p>plugin redis chargé dans la configuration nitro</p>
<pre class="brush:php;toolbar:false;">importer RedisUtil depuis '../utils/RedisUtil';
importer la configuration depuis "~/server.config"
exporter asynchrone par défaut (NuxtApp) =>
attendre RedisUtil.connect(config);
};</pré>
<pre class="brush:php;toolbar:false;">nitro : {
plugins : [
"~/server/plugins/redis.js"
],
},</pré>
<p>Comme mentionné ci-dessus, je peux accéder à la connexion Redis dans toutes les autres exécutions côté serveur, mais pas dans le middleware. Toute aide à ce sujet serait grandement appréciée. </p>
Il semble que vous exécutiez uniquement la requête Redis côté serveur. Fait perdre le contexte au routage côté client lorsqu’il se produit.