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

Posted

技术标签:

【中文标题】如何使用 GraphQL 通过 slug 进行搜索? - 字段“文章”上的“未知参数”【英文标题】:How can I search by slug using GraphQL? - "Unknown argument \"slug\" on field \"article\" 【发布时间】:2020-11-01 04:38:17 【问题描述】:

我在 GraphQL 操场上摆弄着,试图构建一个查询来根据其 slug 检索一篇文章。我的后端在 Strapi 上运行,我构建了一个带有名为“slug”的文本字段的“文章”类型。我可以通过 id 访问它(这似乎有效),但我更喜欢通过 slug 访问它,这样我就可以使用人性化的 url 构建页面。

我有一个 id 为 9 且 slug 为“a”的虚拟文章。

我的查询如下所示:

query Articles 
    article (  slug: "a"  ) 
        title
    

执行此操作后,我收到一个错误:

"message": "Unknown argument \"slug\" on field \"article\" of type \"Query\".",

这让我感到困惑,因为文档 here 表明我应该能够将字段作为参数传递并进行相应的搜索,但即使我将 slug 与标题或作者互换,我也会收到类似的错误。我唯一可以可靠地搜索的是 ID:

query Articles 
    article (  id: "9"  ) 
        title
    

这会正确检索目标文章的信息。我在哪里错了?我已经尝试了各种方法。

See my query / response here。非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

使用find(又名复数形式,因为单数使用findOne)您必须使用 where 过滤器:

query Articles 
    article (where:  slug: "a" ) 
        title
    

【讨论】:

以上是关于如何使用 GraphQL 通过 slug 进行搜索? - 字段“文章”上的“未知参数”的主要内容,如果未能解决你的问题,请参考以下文章

如何基于 GraphQL API 的 slug 使用 Next.js 进行动态路由?

GraphQL / Strapi - 无法按字符串字段过滤

如何在使用 graphql 和 mongodb 的查询中使用“where”参数?

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

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

在 Gatsby 中从 graphQL 查询创建 slug