Как объединить возврат двух вызовов axios get, Nuxt.js Карта сайта

#javascript #function #concatenation #nuxt.js #sitemap

Вопрос:

Эй, ребята, надеюсь, у вас все хорошо 🙂 У меня есть такая ситуация, которую я не знаю, как решить, поэтому я пытаюсь заполнить nuxt.js карта сайта моих динамических веб-сайтов, поэтому, когда у меня был только один звонок, все работало нормально, и я получил то, что мне было нужно в sitemap.xml но когда я добавляю другой, я думаю, что мне нужно объединить результаты, но я не знаю, как это сделать…

  sitemap: {
    routes: async () => {
      let { data } = await axios.get("http://localhost:1337/articles");
      return data.map(v => `${v.slug}`)
    }
  },

I need to add same stuff just with diferent api "http://localhost:1337/faq/slug" 
 

И с одним результатом обоих вызовов api мне нужно заполнить sitempa.xml 🙂

Комментарии:

1. Мой ответ как-то помог вам ?

2. да, большое спасибо за ваше время, у меня нет возможности отказаться от вас, извините 🙁 но когда я увеличу свой акк stackoverflow, я вернусь и сделаю это 😀

Ответ №1:

Используя синтаксис распространения, вы можете сделать это

 sitemap: {
  routes: async () => {
    let { data: articlesData } = await axios.get("http://localhost:1337/articles");
    const articlesArray = articlesData.map(v => `${v.slug}`)
    let { data: slugData } = await axios.get("http://localhost:1337/faq/slug");
    const slugsArray = slugData.map(v => `${v.slug}`)
    return [...articlesArray, ...slugsArray]
  }
},
 

Это должно работать нормально, если вы хотите объединить 2 массива. В противном случае, приведите нам пример того, какая конечная структура нам здесь нужна.

PS: articlesData и slugData переименовываются на лету здесь, чтобы избежать переопределения одной и той же переменной и сохранить все в чистоте.

Комментарии:

1. Да, это то, что я искал на самом деле, я пытался с помощью concat, но не повезло xD спасибо

Ответ №2:

У меня была эта проблема в моем проекте.

Чтобы решить эту проблему, я сделал один запрос для своего api. В Api я создал метод, в котором обрабатывал все запросы.

 sitemap: {
    path: '/sitemap.xml',
    cacheTime: 1000 * 60 * 1440,
    hostname: process.env.SITEURL,
    routes: async () => {
        const {data} = await axios.get(`${process.env.BACKADDR}/getSiteMapRoutes`);
        return data.routers
    }
},