动态 slug 未使用 graphql 和 nuxt 填充 url

Posted

技术标签:

【中文标题】动态 slug 未使用 graphql 和 nuxt 填充 url【英文标题】:dynamic slug not populating the url with graphql and nuxt 【发布时间】:2020-08-18 01:47:53 【问题描述】:

我正在使用 Strapi、Graphql 和 Nuxt.js 来获取项目列表,然后根据单击的按钮显示单个项目,该按钮应在路由参数中带有项目名称的小块。

Graphql 查询如下所示,如果我在变量中传递一个 slug,它确实可以在操场上工作。

query GetProject($slug: String!) 
  projects(where: slug: $slug) 
    id
    name
    slug
  

查询变量


  "slug": "tunnel-to-new-york"

结果是


  "data": 
    "projects": [
      
        "id": "5ea7904136a59018ac9ffb54",
        "name": "Tunnel to New York",
        "slug": "tunnel-to-new-york"
      
    ]
  

在项目页面中,按钮是

<v-btn to="/projects/`$slug`">Model + Details</v-btn>

并在项目列表页面上的 Apollo 查询中

apollo: 
    projects: 
      prefetch: true,
      query: projectsQuery,
      variables() 
        return  slug: this.$route.params.slug ;
      
    
  ,

发送到地址栏的是

http://localhost:3000/projects/%60$%7Bslug%7D%60

如果我像这样输入蛞蝓

http://localhost:3000/projects/tunnel-to-new-york

错误是缺少参数 - 它返回一个数组而不是一个对象

单个项目查询是

query GetProject($slug: String!)   
projects(where: slug: $slug) 
    id
    name
    slug    

在 _slug.vue 中

apollo: 
    project: 
        prefetch: true,
        query: projectQuery,
        variables () 
            return  slug: this.$route.params.slug 
        
    

任何见解都将不胜感激!

【问题讨论】:

【参考方案1】:

所以问题不在于按钮中的“to”绑定 - 冒号丢失并将 slug 更改为 projects.slug

<v-btn :to="`/project/$project.slug`">Model + Details</v-btn>

感谢 Jeffery Biles https://www.youtube.com/watch?v=NS0io3Z75GI&list=PLPwpWyfm6JACZm5kqu6p4s7XHXbAQ7fP-

【讨论】:

以上是关于动态 slug 未使用 graphql 和 nuxt 填充 url的主要内容,如果未能解决你的问题,请参考以下文章

在 Gatsby 中从 graphQL 查询创建 slug

如何通过 GraphQL 的“slug”查询我的 API 以获取单个实体?

GraphQL 请求错误 - 未知参数“slug”

如何使用 GraphQL 通过 slug 进行搜索? - 字段“文章”上的“未知参数”

盖茨比类别 slugs 在动态类别页面中不起作用

在 Next 9 上遇到动态路由问题