0

我正在尝试在我的 gatsby + apollo 项目的构建时添加一个搜索索引。
我尝试关注这篇文章:

我被卡住了,因为在示例中他们使用了集成在 gatsby 启动器中的 MarkdownRemark。但是我想使用从 Apollo 获取的数据(使用 gatsby-source-graphql)。

我需要获取的查询如下所示:

{
  apollo {
    allExampleData {
      name
      ...
    }
  }
}

turorial 使用 context.nodeModel 来获取 MarkdownRemark ,它们都是独立的节点。在我的例子中,有 1 个 GraphQLSource 节点(= apollo)和它下面的几个集合(fe:allExampleData)。尝试获取 GraphQLSource 时,我没有看到任何孩子。

我用来获取数据的代码:

// gatsby-node.js
exports.createResolvers = ({ cache, createResolvers }) => {
  createResolvers({
    Query: {
      LunrIndex: { // = name of the index
        type: GraphQLJSONObject,
        resolve: (source, args, context, info) => {
          // fetching apollo node
          const apolloNode = context.nodeModel.getAllNodes({
            type: `GraphQLSource`,
          })
          // ... create index etc ...
        }
    }
})

这是我看到的变量 apolloNode 的响应:

// console.log(apolloNode)
{
  id: '6b0123db-62eb-5c8c-9465-c75ecc7526f9',
  typeName: 'Apollo',
  fieldName: 'apollo',
  parent: null,
  children: [],
  internal: {
    type: 'GraphQLSource',
    contentDigest: '0380f5a271ee2bec2ab7a95ec173714a',
    ignoreType: true,
    counter: 55,
    owner: 'gatsby-source-graphql'
  }
}

有什么方法可以基于此获取底层的 allIndustries 吗?还是有另一种方法可以在构建期间将数据推送到lunr?

4

0 回答 0