空的 morphMany 关联在联表加载时返回 [] 而非 null

页面摘要: 在 Strapi 5 中,联表加载一个空的 morphMany 关联(包括 type: 'media', multiple: true 字段,如图库)会返回 [] 而非 null。请将检查 field === null 的客户端代码更新为将 [] 视为空状态。

在 Strapi 5 中,当被联表加载时,空的 morphMany 关联和 type: 'media', multiple: true 字段(如图库)现在会序列化为空数组,这与 oneToMany 和 manyToMany 关联保持一致。此前,当不存在相关条目时,这些字段返回 null。

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

破坏性变更说明

在 Strapi v4 中

联表加载一个空的 morphMany 关联或多个媒体字段会返回 null:

{
  "gallery": null
}

在 Strapi 5 中

联表加载一个空的 morphMany 关联或多个媒体字段会返回空数组:

{
  "gallery": []
}

迁移

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

说明

手动操作步骤

检查消费已联表加载的 morphMany 或多个媒体字段的客户端代码、webhook 和集成。

  1. 在代码库中搜索对 field === null 进行分支判断、或将 null 视为已联表加载的 morphMany 或多个媒体字段「无值」的代码。
  2. 将 null 检查替换为数组检查,例如使用 !field?.length。

改动前

if (entry.gallery === null) {
  // 处理空图库
}

改动后

if (!entry.gallery?.length) {
  // 处理空图库
}