Gridsome上下文变量未传递给页面查询

时间:2019-06-06 14:23:07

标签: graph vuejs2 gridsome

我无法在GraphQL primaryTag中访问page-query变量。

我想要实现的是在博客文章页面上:

  • 显示帖子内容
  • 显示相关帖子(基于第一个标签)

在我的gridsome.server.js

api.createPages(async ({ graphql, createPage }) => {
    // Use the Pages API here: https://gridsome.org/docs/pages-api
    const { data } = await graphql(`{
      allPost {
        edges {
          node {
            id
            path
            tags {
              id
            }
          }
        }
      }
    }`)

    data.allPost.edges.forEach(({ node }) => {
      createPage({
        path: `${node.path}`,
        component: './src/templates/Post.vue',
        context: {
          id: node.id,
          path: node.path,
          primaryTag: (node.tags[0] && node.tags[0].id) || '',
        }
      })
    })
  })

然后在我的Post.vue

<page-query>
query Post ($path: String!, $primaryTag: String!) {
  post: post (path: $path) {
    title
    path
    content
  }
  related: allPost(
    filter: { tags: { contains: [$primaryTag] }, path: { ne: $path } }
  ) {
    edges {
      node {
        id
        title
        path
      }
    }
  }
}
</page-query>

不幸的是,我收到以下错误:`非空类型为“ String!”的变量“ $ primaryTag”。不能为空。

此外,作为附带说明(这可能是错误的问题),我正在使用@gridsome/source-filesystem@gridsome/transformer-remark创建我的Post集合。


如果您知道如何解决此问题或有更好的方法来获取相关帖子,请在下面评论。


库: -网格版本:0.6.3 -@ gridsome / cli版本:0.1.1`

0 个答案:

没有答案