如何利用文档详情中`module_id`查询该模型下所有可筛选的参数字段?

📅 👁️ 72

在安企CMS中,为了更好地组织和展示内容,我们经常会用到文档模型和自定义字段。当您希望为特定模型下的文档提供更灵活的筛选功能时,例如根据某个文档的“城市”或“学历”等属性进行查找,就需要知道如何获取这些可筛选的参数字段。

这通常是一个两步走的过程:首先,我们需要确定目标文档所属的模型ID(module_id),这是连接文档与模型定义的关键;然后,利用这个模型ID来查询该模型下所有可用于筛选的参数字段。

第一步:获取文档所属的模型ID(module_id

要了解一个具体文档的module_id,我们可以使用“获取文档详情接口”。这个接口能够提供指定文档的所有基本信息,其中就包含了它所关联的模型ID。

您可以通过向 {域名地址}/api/archive/detail 发送一个 GET 请求来调用此接口。在请求时,您需要提供文档的 id(文档ID)或者 filename(文档URL别名)作为参数,两者选其一即可。

例如,如果您想获取 ID 为 1 的文档详情,请求参数会是 id=1。接口返回的数据中,您会发现一个名为 module_id 的字段。这个字段的值(一个整数)就是我们后续查询筛选参数所需的模型ID。它就像是文档的“户口本”,记录着它属于哪个内容类型。

返回数据示例(简化):

{
  "code": 0,
  "data": {
    "id": 1,
    "title": "欢迎使用AnqiCMS",
    "module_id": 1, // 这就是我们需要的模型ID
    // ... 其他文档详情
  },
  "msg": ""
}

从上面的示例中,我们可以看到 module_id 的值为 1

第二步:利用module_id查询该模型下所有可筛选的参数字段

一旦我们拿到了 module_id,就可以利用“获取文档参数筛选条件接口”来查询该模型下所有可供筛选的字段及其具体选项。

{域名地址}/api/archive/filters 发送一个 GET 请求,并将上一步获取到的 module_id 作为 moduleId 参数传递。

例如,如果您的 module_id 是 1,请求参数会是 moduleId=1。这个接口的响应会非常清晰地列出模型中被设置为可筛选的所有字段。

返回数据示例:

{
  "code": 0,
  "data": [
    {
      "name": "城市",
      "field_name": "city",
      "items": [
        { "label": "全部", "total": 0 },
        { "label": "北京", "total": 0 },
        { "label": "上海", "total": 0 }
      ]
    },
    {
      "name": "学历",
      "field_name": "certificate",
      "items": [
        { "label": "全部", "total": 0 },
        { "label": "硕士", "total": 0 },
        { "label": "本科", "total": 0 }
      ]
    }
  ],
  "msg": ""
}

在这个返回数据中,data 字段是一个数组,数组的每个元素都代表一个可筛选的参数。其中:

  • name:是这个筛选参数的中文名称,方便用户理解。
  • field_name:是这个筛选参数在接口中实际调用的字段名,这是您在后续进行筛选请求时需要使用的关键标识。
  • items:是一个数组,包含了该筛选参数所有可选的值(label),以及当前状态下每个选项对应的文档数量(total)。

通过这种方式,您不仅能知道哪些字段可以筛选,还能了解每个字段提供了哪些具体的筛选选项。

如果您还想进一步了解这些筛选字段的详细配置,比如它们在后台是如何定义的,或者它们是否是系统内置字段,您可以结合“获取模型详情接口” (/api/module/detail) 进行查询。这个接口在返回的模型详情中,会有一个 fields 数组,列出了该模型的所有自定义字段,其中每个字段都有一个 is_filter 属性,明确指示该字段是否被设置为可筛选。这可以帮助您从源头理解筛选参数的设置逻辑。

如何应用这些筛选参数

获取到这些可筛选的 field_name 及其对应的 label 值后,您就可以将其应用到“获取文档列表接口”(/api/archive/list)中,实现更精细的文档列表筛选功能。

例如,如果您从 archive/filters 接口中获得了 field_namecity,并且 items 中有 label 为“北京”的选项,那么在请求 /api/archive/list 时,您就可以添加 city=北京 作为查询参数,来获取所有属于“北京”且与该模型相关的文档列表。这为构建动态、用户友好的内容筛选界面提供了强大的基础。

通过这样的两步操作,您可以轻松地实现根据文档模型动态获取并应用筛选条件的需求,为用户提供更加灵活和个性化的内容浏览体验。


常见问题解答 (FAQ)

  1. Q: 为什么archive/filters接口返回的itemstotal字段的值总是0?

    • A: archive/filters 接口的 total 字段设计上是为了表示在当前筛选条件下,每个选项对应的文档数量。如果您仅仅调用 archive/filters 接口而不配合 archive/list 接口进行实际的文档列表查询,这个 total 值通常会是 0。它通常用于与 archive/list 接口结合,当您传入筛选参数后,archive/list 会返回符合条件的文档数量,而这个 total 字段在 archive/filters 的上下文中,更多是展示该筛选选项的存在,而非其实时匹配数量。
  2. Q: moduleDetail接口中的is_filter属性和archiveFilters接口返回的数据有什么区别?

    • A: moduleDetail 接口返回的 fields 数组中的 is_filter 属性,表示的是该字段在模型定义层面是否被管理员配置为“可以作为筛选条件”。它是一个布尔值(truefalse),说明了字段的 能力。而 archiveFilters 接口返回的数据,则是在此能力基础上,列出了该模型下 实际存在 的、可供用户选择进行筛选的具体选项(label),以及它们的调用名称(field_name)。简而言之,is_filter 是“这个字段能否筛选”,archiveFilters 是“这个字段有哪些具体的筛选值”。
  3. Q: 如果我的文档模型没有设置任何可筛选字段,调用archive/filters接口会返回什么?

    • A: 如果某个文档模型确实没有设置任何可筛选的自定义字段,或者所有自定义字段的 is_filter 属性都为 false,那么调用 archive/filters 接口时,data 字段会返回一个空数组 []。这表示当前模型下没有可用于筛选的参数。

相关文章

当文档详情接口返回`code: -1`时,如何利用`msg`字段进行精确的错误排查?

安企CMS文档详情接口返回`code: -1`时的错误排查指南 在使用安企CMS(AnQiCMS)进行网站内容管理时,我们经常会通过其提供的API接口来获取或操作数据。当调用文档详情接口(例如 `/api/archive/detail`)时,如果收到的返回结果中 `code` 字段为 `-1`,这通常意味着请求没有成功,并且在服务器端处理过程中发生了错误。面对这样的情况,许多用户可能会感到困惑

2025-11-09

文档详情中的`user_id`字段是否指示了文档的发布者或作者ID?

在安企CMS中管理网站内容时,我们经常会遇到各种数据字段,其中`user_id`字段是一个普遍存在且容易让人产生疑问的标识。当我们从安企CMS获取文档详情时,这个`user_id`究竟代表着文档的发布者还是作者呢?要清晰理解这一点,我们需要结合文档接口返回的数据结构来分析。 首先,从`archiveDetail.md`文档中获取文档详情的API返回参数来看

2025-11-09

如果文档受密码保护,如何通过API验证用户提交的密码以获取文档内容?

在安企CMS中,内容管理不仅涵盖了常规的文章发布与展示,也提供了灵活的机制来保护敏感或独家内容。当您需要让用户通过输入密码来访问某个特定的文档内容时,安企CMS提供了一套清晰的API接口来实现这一功能。这对于构建付费内容、VIP专区或是内部资料共享等场景都非常实用。 ### 核心功能:文档密码验证API

2025-11-09

如何使用安企CMS API检查特定文档是否已被支付才能查看?

在构建和运营现代网站时,尤其是当您的平台涉及优质内容或独家资源时,如何有效管理内容的访问权限是一个核心课题。安企CMS(AnQiCMS)提供了强大且灵活的API接口,让您能够精确控制文档的查看条件,其中就包括判断特定文档是否需要付费以及用户是否已完成支付。 下面我们将探讨如何利用AnQiCMS提供的API,来检查一个特定文档是否已被支付才能查看,从而确保您的付费内容得到妥善保护。 ###

2025-11-09

`data.content`字段返回的文档内容是否是HTML格式,是否包含图片或其他富媒体内容?

在使用安企CMS进行网站内容管理时,我们经常会通过 `/api/archive/detail` 接口获取文档的详细信息。其中,`data.content` 字段承载着文章的核心内容。许多初次接触的开发者或运营人员会好奇,这个字段返回的究竟是纯文本,还是带有格式的富文本?它是否能直接包含图片或视频等多媒体内容呢? ### HTML 格式的文档内容 根据安企CMS的API文档描述以及返回数据示例

2025-11-09

如何通过已知的文档详情URL(如`https://www.anqicms.com/anqicms`)来快速获取其API详情?

在安企CMS的日常运营中,我们经常会遇到这样的需求:手头有一个网站上可见的文档详情页URL,例如`https://www.anqicms.com/anqicms`,我们希望通过编程方式快速获取这个文档的完整API详情,包括其标题、内容、SEO信息等。安企CMS为此提供了一个非常便捷且直观的接口来满足这一需求。 要实现这个目标

2025-11-09

如果`images`字段为`null`,是否意味着该文档没有关联任何图片?

在使用安企CMS管理网站内容时,我们经常会与API接口打交道,获取或提交各种数据。其中,图片数据是网站内容不可或缺的一部分,而关于文档中 `images` 字段的返回形式,有时会让人感到一些疑惑:当 `images` 字段返回 `null` 时,这是否真的意味着该文档完全没有关联任何图片呢? ### 了解安企CMS中的“组图”概念 在安企CMS的文档结构中,图片通常分为几种类型: *

2025-11-09

在实际部署中,`{域名地址}`的替换需要注意哪些事项?

在使用安企CMS(AnQiCMS)进行二次开发或与外部系统集成时,您会经常在API接口文档中遇到 `{域名地址}` 这样的占位符。这代表着您的安企CMS部署所在的实际网址。正确地替换这个占位符,是确保API调用成功、系统稳定运行的基础。理解其背后的含义,并掌握替换时的注意事项,能帮助您更高效地与AnQiCMS进行交互。 首先,`{域名地址}` 本质上是一个变量

2025-11-09