Size: a a a

Nuxt.js — русскоговорящее сообщество

2021 January 11

MK

Maxim Kostenko in Nuxt.js — русскоговорящее сообщество
Нет
источник

MK

Maxim Kostenko in Nuxt.js — русскоговорящее сообщество
Он тебе выдаст Promise
источник

MK

Maxim Kostenko in Nuxt.js — русскоговорящее сообщество
Если перевести на русский это обещание выдать общий массив
источник

MK

Maxim Kostenko in Nuxt.js — русскоговорящее сообщество
Короче дебаж где у тебя ломается
источник

AD

Aleksandr Dergunov in Nuxt.js — русскоговорящее сообщество
stvorka34
Ребята, все привет! Пытаюсь сгенерировать пути для статического сервера на хостинге. И вот засада какая: если запрос один, то все ОК. Но если запросов больше, то ничего не работает. Щас поясню:

Вот так все работает:

/// nuxt.config.js

import axios from 'axios'
let dynamicPortfolioRoutes = () => {
 return axios.get('https://api.myUrl/portfolio').then((res) => {
   return res.data.map((item) => /portfolio/${item._id})
 })
}
export default {
 ....
 generate: {
   routes: dynamicPortfolioRoutes
 },
}

А вот так не работает:

import axios from 'axios'
let dynamicPortfolioRoutes = () => {
 return axios.get('https://api.myUrl/portfolio').then((res) => {
   return res.data.map((item) => /portfolio/${item._id})
 })
}

let dynamicPortfolioRoutes2 = () => {
 return axios.get('https://api.myUrl/portfolio2').then((res) => {
   return res.data.map((item) => /portfolio2/${item._id})
 })
}
export default {
 ....
 generate: {
   routes: [dynamicPortfolioRoutes, dynamicPortfolioRoutes2],
 },
}
Есть похожая схема на бэке. Вдруг поможет:
let clients = await Promise.map(clients, async element => {
   const JanOrders = await Order.countDocuments({
       client: element._id,
       order_date: {
           $gt: "2020-01-01T00:00:00.000Z",
           $lt: "2020-02-01T00:00:00.000Z"
       }
   });
   element.JanOrders = JanOrders;
   const FebOrders = await Order.countDocuments({
       client: element._id,
       order_date: {
           $gt: "2020-02-01T00:00:00.000Z",
           $lt: "2020-03-01T00:00:00.000Z"
       }
   });
   element.FebOrders = FebOrders;
   return element;
});
источник

MK

Maxim Kostenko in Nuxt.js — русскоговорящее сообщество
источник

AD

Aleksandr Dergunov in Nuxt.js — русскоговорящее сообщество
Похожая))) но не такая. Тут я к списку клиентов добавляю количество заказов.
источник

MK

Maxim Kostenko in Nuxt.js — русскоговорящее сообщество
Не вижу просто в mdn такого
источник

AD

Aleksandr Dergunov in Nuxt.js — русскоговорящее сообщество
const Promise = require("bluebird")
http://bluebirdjs.com/docs/api/promise.map.html
источник

MK

Maxim Kostenko in Nuxt.js — русскоговорящее сообщество
Ок это либа.
источник

AD

Aleksandr Dergunov in Nuxt.js — русскоговорящее сообщество
stvorka34
Ребята, все привет! Пытаюсь сгенерировать пути для статического сервера на хостинге. И вот засада какая: если запрос один, то все ОК. Но если запросов больше, то ничего не работает. Щас поясню:

Вот так все работает:

/// nuxt.config.js

import axios from 'axios'
let dynamicPortfolioRoutes = () => {
 return axios.get('https://api.myUrl/portfolio').then((res) => {
   return res.data.map((item) => /portfolio/${item._id})
 })
}
export default {
 ....
 generate: {
   routes: dynamicPortfolioRoutes
 },
}

А вот так не работает:

import axios from 'axios'
let dynamicPortfolioRoutes = () => {
 return axios.get('https://api.myUrl/portfolio').then((res) => {
   return res.data.map((item) => /portfolio/${item._id})
 })
}

let dynamicPortfolioRoutes2 = () => {
 return axios.get('https://api.myUrl/portfolio2').then((res) => {
   return res.data.map((item) => /portfolio2/${item._id})
 })
}
export default {
 ....
 generate: {
   routes: [dynamicPortfolioRoutes, dynamicPortfolioRoutes2],
 },
}
Или другой путь - объединить всё на бэке:

router.get("/sitemap", async (req, res) => {
 try {
   const blogs = await Blog.find().select("url -_id");
   const services = await Service.find().select("url -_id");

   const sitemap = blogs.concat(services);
   res.json(sitemap);
 } catch (err) {
   res.status(500).json({ message: err.message });
 }
});
источник

s

stvorka34 in Nuxt.js — русскоговорящее сообщество
Maxim Kostenko
Короче дебаж где у тебя ломается
да знать бы еще, что ломается))))

Вот тут значение у routes - промис, являющийся результатом работы 2х промисов.
Что еще нужно? Не пойму...

generate: {
   routes: Promise.all([dynamicPromoRoutes(), dynamicPortfolioRoutes()]),
 },
источник

MK

Maxim Kostenko in Nuxt.js — русскоговорящее сообщество
Это вернет тебе массив из двух элементов с результатами двух функций
источник

MK

Maxim Kostenko in Nuxt.js — русскоговорящее сообщество
Вы проверили, что обе функции работают?
источник

MK

Maxim Kostenko in Nuxt.js — русскоговорящее сообщество
Или только первую? :)
источник

s

stvorka34 in Nuxt.js — русскоговорящее сообщество
Обе работают.
источник

s

stvorka34 in Nuxt.js — русскоговорящее сообщество
Короче, проще захардкодить)))
источник

s

stvorka34 in Nuxt.js — русскоговорящее сообщество
В документации есть такое: routes:['/route', '/route2', '/route3']. Т.е. можно передать простой массив строк с адресами. Я вывел в консоль результат промис.all, скопировал оттуда весь массив и установил его как значение. Списки страниц в dist сгенерились, должно все работать)))
источник

MK

Maxim Kostenko in Nuxt.js — русскоговорящее сообщество
Так у вас массив массивов
источник

MK

Maxim Kostenko in Nuxt.js — русскоговорящее сообщество
Routes: [[route],[route2,route3]]
источник