Показать сообщение отдельно
  #1 (permalink)  
Старый 16.07.2020, 17:56
Новичок на форуме
Отправить личное сообщение для QoreCode Посмотреть профиль Найти все сообщения от QoreCode
 
Регистрация: 25.03.2019
Сообщений: 8

Vuex и работа с модулями.
Господа, доброго времени суток. На своём проекте я использую самописную rest api на бэке и vue + vuex на клиенте. В поисках оптимизации я решил добавить в api поддержку выборки связанных сущностей, к примеру гет запрос пользователей может заодно получить связанную сущность заданий:
some-api.com/user
{
properties:{name: "Vasia"},
extend:['issue']
}
результатом данного запроса будет:
{
entities:[
{id:2, name: "Vasia"},
{id:5, name: "Vasia"}
],
extends:{
issue:[
{id: 5, userId:2, title:"some title 5"},
{id: 7, userId:2, title:"some title 7"},
{id: 9, userId:5, title:"some title 9"}
]
}
}

Так же расскажу о структуре своего стора. Он у меня модульный и под каждую сущность отведен модуль для работы с ней. Для примера у user есть user-module, у issue есть issue-module. Таким образом я разделяю логику запросов и выборок разных сущностях по модулям и мне легче ориентироваться в приложении... все модули миниатюрные и отвечают только за одну сущность.

Так вот, ранее (до появления метода extend) я делал подобное 2мя отдельными запросами которые отлично себя чувствовали в разных экшенах модулей user-module и issue-module. Сейчас же мне кажется неправильным вызывать экшен модуля user-module, и в запросе так же указывать выборку заданий, которые позже нужно закомитить в issue-module.

Я вижу несколько решений данной пробелмы:
1. Вызывать экшен loadUserWithIssues в родительском модуле. Но я боюсь что это в корне не верно и пытаться выстроить иерархию модулей только для запросов кажется мне глупостью
2. В каком-то компоненте (скажем компоненте страницы) отдельно послать запрос, получить данные и отправить их на обработку/сохранение в соответствующие модули. Этот вариант мне нравится больше, но не выходит ли данный подход за пределы конецпции vuex?

Подскажите, пожалуйста, правильное решение данной проблемы... возможно мне вовсе не подходит использование метода extend при работе с vuex. Или возможно стоит пересмотреть модули... скажем объеденить все сущности в один модуль... это облегчит многие выборки, но я опасаюсь что модуль может чрезмерно разростись...

Последний раз редактировалось QoreCode, 16.07.2020 в 18:03. Причина: Вспомнил важное уточнение
Ответить с цитированием