UNPKG

@ecomplus/utils

Version:

JS utility functions to E-Com Plus (not only) related apps

45 lines (42 loc) 1.46 kB
/** * @method * @memberof ecomUtils * @name searchedItems * @description Returns array of items (products) from Search API response. * @param {Object.<string, *>|Array} result - Search response body or ELS hits array * @returns {Array} * * @example * // Full Search API response samples: * // https://developers.e-com.plus/docs/api/#/search/items/items * const result = { took: 6, hits: { total: 2, hits: [] } } * result.hits.hits.push({ _id: '123', _source: { sku: 'TEST', name: 'Test' } }) * result.hits.hits.push({ _id: '456', _source: { sku: 'SMP', name: 'Smp' } }) * ecomUtils.searchedItems(result) * // => [ { _id: '123', sku: 'TEST', name: 'Test' }, { _id: '456', sku: 'SMP', name: 'Smp' } ] * // Same passing the `hits` array as param * ecomUtils.searchedItems(result.hits.hits) * // => [ { _id: '123', sku: 'TEST', name: 'Test' }, { _id: '456', sku: 'SMP', name: 'Smp' } ] */ const searchedItems = result => { let hits if (typeof result === 'object' && result !== null) { if (Array.isArray(result)) { hits = result } else if (result.hits) { // ELS response body hits = result.hits.hits || result.hits } } // setup items list // array of nested objects const items = [] if (Array.isArray(hits)) { // map items array from ELS hits list hits.forEach(({ _id, _source }) => { items.push(Object.assign({}, _source, { _id })) }) } return items } export default searchedItems