如何使用 GraphQL 按 slug 进行搜索? - "Unknown argument \"slug\" 在字段 \"article\"

How can I search by slug using GraphQL? - "Unknown argument \"slug\" on field \"article\"

我正在 GraphQL 操场上摆弄,试图构建一个查询以根据其 slug 检索文章。我的后端是 Strapi 上的 运行,我构建了一个带有名为 'slug' 的文本字段的 'Article' 类型。我可以通过 id 访问它(这似乎有效),但我更喜欢通过 slug 访问它,这样我就可以使用 human-friendly 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。非常感谢您的帮助。

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

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

Strapi 的工作方式与上面的解决方案不同。对我有用的是:

query Articles ($slug: String!) {
articles(filters: {slug: {eq: $slug}}) {
....}

您必须按照以下方式进行查询:

filters: { field: { operator: value } }

有关过滤器的文档中的更多信息,here