javascript gatsby-node.js strapi两个来源

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript gatsby-node.js strapi两个来源相关的知识,希望对你有一定的参考价值。

const path = require(`path`);

const makeRequest = (graphql, request) => new Promise((resolve, reject) => {  
  // Query for article nodes to use in creating pages.
  resolve(
    graphql(request).then(result => {
      if (result.errors) {
        reject(result.errors)
      }

      return result;
    })
  )
});


// Implement the Gatsby API “createPages”. This is called once the
// data layer is bootstrapped to let plugins create pages from data.
exports.createPages = ({ boundActionCreators, graphql }) => {  
  const { createPage } = boundActionCreators;

  const getArticles = makeRequest(graphql, `
    {
      allStrapiArticle {
        edges {
          node {
            id
          }
        }
      }
    }
    `).then(result => {
    // Create pages for each article.
    result.data.allStrapiArticle.edges.forEach(({ node }) => {
      createPage({
        path: `/${node.id}`,
        component: path.resolve(`src/templates/article.js`),
        context: {
          id: node.id,
        },
      })
    })
  });

  const getAuthors = makeRequest(graphql, `
    {
      allStrapiUser {
        edges {
          node {
            id
          }
        }
      }
    }
    `).then(result => {
    // Create pages for each user.
    result.data.allStrapiUser.edges.forEach(({ node }) => {
      createPage({
        path: `/authors/${node.id}`,
        component: path.resolve(`src/templates/user.js`),
        context: {
          id: node.id,
        },
      })
    })
  });

  // Queries for articles and authors nodes to use in creating pages.
  return Promise.all([
    getArticles,
    getAuthors,
  ])
};

以上是关于javascript gatsby-node.js strapi两个来源的主要内容,如果未能解决你的问题,请参考以下文章

在 Gatsby 中允许可选的 GraphQL 数据

gatsbyjs:多次使用graphql,还是一次使用并通过上下文传递结果?

在 Gatsby 上创建第二个博客模板

盖茨比动态 slug

Gatsby `createPage` 正在生成具有相同数据的页面

如何从索引页重定向到Gatsby.JS项目中以编程方式生成的路由