Для массива объектов:
[
{id: 1, name: "test", tagId: 1},
{id: 2, name: "test", tagId: 15},
{id: 3, name: "test", tagId: 5},
]
Необходимо сократить список определенных свойств (tagId) до уникального массива [1,15,5], вызвать какой-либо метод пакетной обработки, например, выполнить http-запросдля API для списка сущностей:
async (ids) => await axios.get('http://apihost/tag', {id: ids})
Для массива объектов результатов:
[
{id: 1, name: "tag1"},
{id: 15, name: "tag2"},
{id: 5, name: "tag3"},
]
Наконец, необходимо сопоставить эти объекты по атрибуту ID с исходным массивом объектов, сопоставляемых по result.id=> original.tagId, фактически делает соединение SQL двух массивов, чтобы получить это (например, https://github.com/mtraynham/lodash-joins):
[
{id: 1, name: "test", tagId: 1, tag: {id: 1, name: "tag1"}},
{id: 2, name: "test", tagId: 15, tag: {id: 15, name: "tag2"}},
{id: 3, name: "test", tagId: 5, tag: {id: 5, name: "tag3"}},
]
Я уже написал библиотеку PHP для этого с API, например:
new BulkMap(source).map(
'tagId',
'tag',
async (ids) => axios.get('http://apihost/tag', {id: ids})
);
Но теперь мне нужно это в JS. Есть ли какая-либо библиотека Javascript / NodeJS для этого? Похоже, довольно распространенный шаблон для микросервисов.