实体服务已弃用
页面摘要: 实体服务 API 在 Strapi 5 中已弃用,并由文档服务 API 取代。后者使用
documentId、对所有查询返回数组,并引入了用于草稿与发布工作流的新方法。
Strapi v4 中使用的实体服务已弃用,并在 Strapi 5 中被新的 文档服务 API 取代。 本节汇总了关于该破坏性变更的有用说明和操作步骤。
代码迁移工具: entity-service-document-service
破坏性变更说明
在 Strapi v4 中
实体服务 API 是与内容类型交互的首选 API。
在 Strapi 5 中
文档服务 API 取代了 Strapi v4 的实体服务 API。
迁移
本节汇总了关于该破坏性变更的有用说明和操作步骤。
说明
使用 Strapi 5 的文档服务 API 而非 Strapi v4 的实体服务 API 时,需要考虑以下主要问题:
-
文档服务 API 需要一个
documentId属性。 此破坏性变更也影响 REST 和 GraphQL API(👉 请参阅 相关破坏性变更条目)。 :::info 为方便过渡到 Strapi 5,文档服务 API 的响应除了新的documentId字段外,仍然包含id字段。 ::: -
findMany()函数在 Strapi v4 和 Strapi 5 中返回的结果不同:在 Strapi v4 中:
实体服务 API 的
findMany()函数对单一类型返回单个条目。在 Strapi 5 中:
文档服务 API 的
findMany()函数 始终返回数组。
要获取单个条目,请从返回的数组中提取第一项,或使用 第 findFirst() 函数。
-
Strapi 5 中不再有
findPage()方法。 👉 请参阅 相关破坏性变更条目。 -
草稿与发布 功能在 Strapi 5 中已更新,这体现在文档服务 API 中:
-
文档服务 API 的
delete()函数 返回一个受影响条目的列表(可一次性删除多个语言版本),而 Strapi v4 的delete()函数只返回被删除的条目。 -
实体服务装饰器(decorators)不再可用,必须改用 文档服务中间件。
-
文档服务 API 不支持文件上传。
迁移步骤
使用 升级工具 时,迁移部分由 codemod 处理。
👉 实体服务 API 到文档服务 API 迁移参考 提供了关于哪些方面由 codemod 处理、哪些用例需要手动迁移的更多信息。