空的 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关联类型,包括type: 'media', multiple: true字段(例如图库字段)。 - 此变更是无条件的,不受
api.documents.strictRelations设置控制。 - 有关联表加载关联的相关信息,请参阅 文档服务 API:联表加载字段 和 REST API:联表加载与字段选择。
手动操作步骤
检查消费已联表加载的 morphMany 或多个媒体字段的客户端代码、webhook 和集成。
- 在代码库中搜索对
field === null进行分支判断、或将null视为已联表加载的morphMany或多个媒体字段「无值」的代码。 - 将
null检查替换为数组检查,例如使用!field?.length。
改动前
if (entry.gallery === null) {
// 处理空图库
}
改动后
if (!entry.gallery?.length) {
// 处理空图库
}