我使用的插件会根据API请求自动为我创建节点。它运行良好,但返回的数据超出了我的需要,包括与我的应用程序无关的节点。在onCreateNode
中的gatsby-node
中如何删除节点?
例如。我只想要带有标题的节点。如果它有标题,我要保留它,并添加一个字段。如果没有,我想将其删除。这可以正确识别节点类型:
if(node.internal.type === `community_education__classes` && node.title && node.title._t) {
const correctedClassObject = classCorrector(node.content._t);
createNodeField({
node,
name: `className`,
value: node.title._t,
});
}
这样我就可以找到要删除的节点
if(node.internal.type === `community_education__classes` && (!node.title || !node.title._t)) {
// need code to delete node that matched these conditions
}
我希望有一个我找不到的Gatsby API?
答案 0 :(得分:3)
您可以使用Gatsby的deleteNode
,它是actions
fka boundActionCreators
的一部分。
exports.onCreateNode = ({ node, boundActionCreators }) => {
const { deleteNode } = boundActionCreators;
// Check the node, delete if true.
if (condition) {
deleteNode(node.id, node);
}
}