NextJS и Strapi : извлечение нескольких страниц API с помощью одной функции getStaticPaths()

#javascript #reactjs #next.js #strapi

Вопрос:

NextJS и Strapi объясняют, как извлекать данные из одного типа коллекции внутри Strapi, делая это:

 const pages = await (await fetch(getStrapiURL("/pages"))).json();
 const paths = pages.map((page) => {
    // Decompose the slug that was saved in Strapi
    const slugArray = page.slug.split("__");
    return {
      params: { slug: slugArray },
    };
  });
  return { paths, fallback: true };
 

}

Теперь моя цель-извлечь данные из нескольких типов коллекций / страниц: Вот мой текущий код, который я использую для этого:

 export async function getStaticPaths() {
  const [ pages, blogs ] = await Promise.all([
    fetchAPI("/pages"),
    fetchAPI("/blogs"),
  ]);
}
 

Как вы можете видеть, я использовал функцию обещания для получения нескольких одновременно.
Как мне сопоставить обе эти страницы вместе в функции карты

Ответ №1:

Правки: Я усложнял, используя вот так:

 export async function getStaticPaths() {
  const [pages, blogs] = await Promise.all([
    fetchAPI("/pages"),
    fetchAPI("/blogs"),
  ]);
  const all = {pages, blogs}
  const paths = Object.keys(all).map(a => ({params: all[a]}))
  return {
    paths,
    fallback: true
  }
}
 

Но пока вы можете просто использовать вот так:

 export async function getStaticPaths() {
  const all = await Promise.all([
    fetchAPI("/pages"),
    fetchAPI("/blogs"),
  ]);
  const paths = all.map(a => ({params: a}))
  return {
    paths,
    fallback: true
  }
}