Нужна помощь в понимании как правильней сделать.
Есть сервер на Express. Подключена внешняя библиотека которая забирает данные из закрытого API.
Для каждой конечной точки свой роут, вот допустим два из них.
// Тут получаем массив объектов всех валют.
router.get('/getmarketsummaries', async (req, res, next) => {
try {
res.json(await client.marketSummaries())
} catch (error) {
next(createError(404, error))
}
})
// Тут получаем массив объектов открытых ордеров.
router.get('/getorderbook', async (req, res, next) => {
try {
res.json(await client.orderBook(req.query.market, req.query.type))
} catch (error) {
next(createError(400, error))
}
})
Далее, на клиенте (Vue) я "стучусь" по этим роутам, получаю данные и сохраняю их в стейт (Vuex), все как положено через экшены мутации и т.д.
Тут я привел бы примеры полного кода, но его очень много, поэтому постараюсь объяснить так.
Единственное отличие, запрос к
/getmarketsummaries я делаю с интервалом каждую секунду, чтобы получать актуальные цены.
В родительском компоненте я формирую карточки.
getTickers это геттер, который тянет данные из стейта, в нем и лежат все валюты, которые обновляются ежесекундно.
<b-col v-for="(ticker, index) in getTickers" :key="index">
<Card :ticker="ticker"/>
</b-col>
Вот тут я и застрял.
Есть ведь еще роут
/getorderbook, у которого так же есть геттер и данные в стейте.
Я ведь не могу в
v-for генерировать карточки из двух массивов.
Соответственно нужно объеденить массивы, что я и делаю отдельным методом в соседнем тестовом компоненте.
НО, так как один из роутов обновляется каждую секунду, а в другом данные статичные,
то объедененый массив так же каждую секунду обновляется, что не есть хорошо.
Мне нужно на основе открытых ордеров, сформировать карточки и на основе тикеров в каждой карточке добавит вывод актуальной цены, чтобы рассчитать разницу.
К сожалению в апи нет готовых точек.
Возникает несколько вопросов:
1 - как правильней поступать в такой ситуации?
2 - плохая ли практика объединять подобные вещи на клиенте или лучше это делать на сервере и отдавать уже готовый массив?
3 - может я чего не знаю, можно ли как то формировать карточку на основе данных из двух массивов?
4 - правильно ли пихать часто обновляемые данные в стейт?
5 - я вообще все не правильно сделал? :)