启用草稿与发布时不能将 status 用作属性名

在 Strapi 5 中,status 是文档服务 API 和 REST API 用于区分草稿与已发布内容的保留参数。在启用了草稿与发布的内容类型上定义一个同样名为 status 的用户自定义属性会导致命名冲突。

本页面是破坏性变更数据库的一部分,提供有关该破坏性变更的信息,以及从 Strapi v4 迁移到 Strapi 5 的附加说明。

破坏性变更说明

在 Strapi v4 中

启用了草稿与发布的内容类型可以有一个名为 status 的用户自定义属性。该属性名与使用 publicationState 参数的发布工作流之间没有冲突。

在 Strapi 5 中

status 是草稿与发布的保留查询参数(它取代了 publicationState)。在启用了草稿与发布的内容类型上定义一个名为 status 的用户属性会导致命名冲突。Strapi 5 按如下方式强制执行此限制:

  • 内容类型构建器: 阻止在启用了草稿与发布的任何内容类型上创建 status 属性。同时阻止在已拥有 status 属性的内容类型上启用草稿与发布。
  • 服务器启动: 当检测到 status 属性与草稿与发布同时存在时,会记录一条警告(每个内容类型 UID 一次)。服务器会继续启动,以免破坏现有项目。

迁移

本节汇总了关于该破坏性变更的有用说明和操作步骤。

说明

  • status 属性名也是 Strapi 5 中更广泛的全局保留名称列表的一部分。完整列表请参阅 部分属性和内容类型名称为保留名称。
  • 此破坏性变更增加了一个上下文相关的限制:status 冲突仅在内容类型启用了草稿与发布时才被强制执行。
  • 有关 status 参数如何用于查询草稿与已发布内容的详情,请参阅 草稿与发布。

手动操作步骤

如果某个内容类型拥有 status 属性且启用了草稿与发布(或你打算启用它),请在启用草稿与发布之前重命名 status 属性。

  1. 在内容类型构建器中,打开拥有 status 属性的内容类型。
  2. 将 status 属性重命名为非保留名称(例如 approval_status 或 workflow_state)。
  3. 点击 保存 以应用模式(schema)变更。
  4. 更新任何引用旧 status 属性名的查询、控制器、服务、策略或前端代码。
  5. 如果草稿与发布曾被阻止启用,请在内容类型的 高级设置 选项卡中重新启用它。