更新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());
});
};