从Gatsby移除节点

时间:2018-07-12 14:25:37

标签: node.js gatsby

我使用的插件会根据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?

1 个答案:

答案 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);
  }
}