Estoy intentando usar un método de reducción en lugar de un mapa en una matriz de objetos. El resultado produce un objeto de matrices, y tengo muchos problemas para devolver el formato de rutas nuxt adecuado.
Mi primera implementación creó rutas como
routes () { return this.$axios.get('https://usewrapper.herokuapp.com/products').then((res) => { const routes = [] for (const key in res.data) { routes.push({ route: '/store/' + res.data[key].storeID + '/product/' + res.data[key].productId, payload: { productData: res.data[key] } }) } return routes }) }Esto devolvería efectivamente una ruta única para cada producto en la tienda. Pero ahora intento devolver todos los productos para un ID de tienda específico y decidí usar el método de reducción para clasificar esos productos en el mismo objeto.
El código que he escrito hasta ahora es,
const stores = axios.get('https://usewrapper.herokuapp.com/products').then((res => { return res.data.reduce((stores, item) => ({ ...stores, [item.storeID]: [...(stores[item.storeID] || []), item] })); } ))Esto crea datos como {1: Array(11), 2: Array(5), 3: Array(10)} Los 11 elementos de la matriz son todos productos individuales, que pertenecen al ID de la tienda indexada. (Imagen a continuación)
En este punto, tengo problemas para replicar el código como se muestra a continuación, el objetivo final es para cada carga de ruta '/store/1': array(11)/ todos los productos
carga útil de la ruta 'store/2': array(5) / todos los productos
Y estoy usando el siguiente código para permitir que mi nuxt genere para hacer varias llamadas a la API
generate: { routes: function () { let posts = axios.get('https://api.com/posts', {params: {size: 10}}).then((res) => { return res.data.posts.map((post) => { return { route: '/feed/' + post.id, payload: post } }) }) let users = axios.get('https://api.com/users', {params: {size: 10}}).then((res) => { return res.data.content.map((user) => { return { route: '/user/' + user.id, payload: user } }) }) return Promise.all([posts, users]).then(values => { return [...values[0], ...values[1]] }) } },