为什么Firebase中的数据无法在Gatsby中生成新页面?

时间:2018-10-09 15:35:11

标签: node.js reactjs firebase graphql gatsby

更新Firebase时,它将更新gatsby中的节点,然后应使用新节点调用createPage来创建新页面。

但是这不会发生。节点更新&似乎调用了createPage,但是直到重新启动服务器后才生成页面。

似乎在教程中人们已经解决了这个问题,但是我的代码没什么不同。

exports.sourceNodes = async ({ actions }) => {
  const { createNode } = actions;
  return new Promise((resolve, reject) => {
    firebase.database().ref('widgets')
      .on('value', snap => (
        snap.forEach((widget) => {
          const productNode = {
            id: `${widget.val().ref}`,
            parent: null,
            children: [],
            internal: {
              type: 'Widget',
              contentDigest: 'fgdgsgfdd' + widget.val().ref,
            },
            title: `${widget.val().title}`,
          };
          createNode(productNode);
          resolve();
        })));
  });
};

exports.createPages = ({ graphql, actions }) => {
  const { createPage } = actions;
  return new Promise((resolve, reject) => {
    graphql(`
    {
      allWidget {
        edges {
          node {
            title
            id
          }
        }
      }
    }
  `).then((result) => {
    result.data.allWidget.edges.forEach(({ node }) => {
      console.log(node.title)
        createPage({
          path: 'widgets/' + node.id,
          component: path.resolve('./src/templates/widget.js'),
          context: {
            title: node.title,
            id: node.id,
          },
        });
      });
      resolve();
    }).catch(() => reject());
  });
 };

0 个答案:

没有答案