【问题标题】:Strapi API Rest V 3.6.8 how to search posts by title?Strapi API Rest V 3.6.8 如何按标题搜索帖子?
【发布时间】:2022-11-15 19:08:22
【问题描述】:

我已经安装了 Strapi 3.6.8 版本

在 v3.x 的文档中 https://strapi.gitee.io/documentation/v3.x/content-api/parameters.html#filter

过滤器用作字段名称的后缀:

  • 没有后缀或 eq:等于
  • ne:不等于
  • lt:不到
  • gt:大于
  • lte:小于等于
  • gte: 大于等于
  • in:包含在一个值数组中
  • nin:不包含在值数组中
  • contains:包含
  • ncontains:不包含
  • containss:包含区分大小写
  • ncontainss:不包含区分大小写
  • null:为空/不为空

我可以看到那些例子

GET /餐厅?_where[price_gte]=3

GET /restaurants?id_in=3&id_in=6&id_in=8

ETC..

所以我试过了

/posts?_where[title_contains]=foo
/posts?title_contains=foo

而我也在V4中尝试了“新方式”

/posts?filters[title][contains]=foo

但是所有这些尝试都返回了所有帖子,与只是做的完全一样

/posts?

知道如何按帖子标题和/或帖子正文进行过滤吗?

【问题讨论】:

    标签: rest search filtering strapi


    【解决方案1】:

    快到了我的朋友!您面临的问题称为deep filtering(请点击文档链接)。

    简而言之:title 字段位于每个项目的 attributes 对象内

    您的物品可能看起来类似于:

    {
      "data": [
        {
          "id": 1,
          "attributes": {
            "title": "Restaurant A",
            "description": "Restaurant A's description"
          },
          "meta": {
            "availableLocales": []
          }
        },
        {
          "id": 2,
          "attributes": {
            "title": "Restaurant B",
            "description": "Restaurant B's description"
          },
          "meta": {
            "availableLocales": []
          }
        },
      ]
    }
    

    因此过滤器应该是

    /posts?filters[attributes][title][$contains]=Restaurant
    

    另请注意:

    • $ 符号应包含在您的操作员中(在我们的例子中为 contains
    • 您可能更喜欢使用 $containsi 运算符来忽略大小写字母(更适合搜索操作)

    让我知道它是否对您有用!

    【讨论】:

    • 非常感谢你,但没有..它也返回所有帖子..
    • 有机会附上一些物品吗?更好地阐明您要查询的数据集的结构
    猜你喜欢
    • 2016-01-12
    • 2018-02-17
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 2011-12-19
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多