最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

node.js - Vue Nuxt 2 Middleware: Requests Conflicting Between Users - Stack Overflow

programmeradmin1浏览0评论

I have a Vue Nuxt 2 website where I use middleware to resolve URLs. However, I'm experiencing an issue where requests are conflicting between users. I am using vue storefront as well.

If one user opens product abc and another user opens product xyz at the same time, I sometimes get xyz loaded instead of abc.

Middleware Code (url-resolver.ts):

import { Middleware } from '@nuxt/types';
import { usePageStore } from '~/stores/page';
import { Logger } from '~/helpers/logger';
import { RoutableInterface } from '~/modules/GraphQL/types';

const urlResolverMiddleware: Middleware = async (context) => {
  const pageStore = usePageStore();
  const { path } = context.route;
  
  const clearUrl = path.replace(/[a-z]+\/[cp|]\//gi, '').replace(`/${context.i18n.locale}`, '');
  
  Logger.debug('middleware/url-resolver', clearUrl);

  const { data, errors } = await context.app.$vsf.$magento.api.route(clearUrl);
  
  Logger.debug('middleware/url-resolver/result', { data, errors });

  const results: RoutableInterface | null = data?.route ?? null;

  if (!results || errors?.length) context.error({ statusCode: 404 });
  
  pageStore.$patch((state) => {
    state.routeData = results;
  });
};

export default urlResolverMiddleware;

stores > pages.ts :

import { defineStore } from 'pinia';

interface PageState {
  routeData: any;
}

export const usePageStore = defineStore('page', {
  state: (): PageState => ({
    routeData: null,
  }),
});

How can I ensure that each user gets only their requested product without conflicts?

发布评论

评论列表(0)

  1. 暂无评论