#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
}
},