Хранение неизвестного количества файлов с помощью Vuex - PullRequest
0 голосов
/ 18 июня 2020

Справочная информация

В настоящее время я использую Nuxt. js в сочетании с Netlify CMS для создания веб-сайта, на котором администратор может динамически добавлять подкатегории в основную категорию - пример: если вы продаете средства для волос, вы можете sh добавить подкатегорию «воск для волос». При добавлении продукта в CMS пользователь должен выбрать одну из созданных им подкатегорий.

Пока это отлично работает, когда пользователь создает новый продукт для волос, этот продукт сохраняется в папке «assets / content. /hair/[SUBCATEGORY ]/product.json ', например:' assets / content / hair / shampoo / coconut_shampoo.json '.

Вот еще один способ визуализации:

Screenshot of the file structure as described

Проблема

Однако проблема возникает, когда я хочу хранить эти продукты с помощью Vuex. В настоящее время я вручную указываю, из какой папки категории получать продукты: import Vue from 'vue'

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

export const state = () => ({
shampoo: []
});

export const mutations = {
  SET_SHAMPOO_PRODUCTS(state, data) {
state.shampoo = data
  }
};

export const actions = {
  async nuxtServerInit({ dispatch }) {
  await dispatch('getShanpooProducts')
  },
  async getShampooProducts({ state, commit }) {
  let context = await require.context('~/assets/content/subcategories/hair/shampoo', false, /\.json$/);

  let products = context.keys().map(key => {
      let res = context(key);
      res.slug = key.slice(2, -5);
      return res;
  });

  commit('SET_SHAMPOO_PRODUCTS', products)
  }
};

Это работает, когда я знаю подкатегории, которые будут включены, но потому что пользователь (/ admin ) может создавать столько подкатегорий, сколько им нравится, это обеспечивает неизвестное количество папок в каталоге 'hair'.

Итак, как я могу хранить каждую папку подкатегорий, найденную в каталоге 'hair', не зная, как их много?

...