You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Strapi新建视频内容时slug字段未保存返回null问题排查

问题根因

slug字段返回null本质是字段没有被自动赋值,和未安装slugify依赖直接相关:

  • Strapi核心框架不自带slug自动生成能力,在内容类型配置里添加slug字段,仅完成了数据库字段的创建,框架本身不会主动给这个字段填充值,字段为空时GET接口自然返回null。
  • Strapi常规的slug自动生成方案,是通过模型生命周期钩子,在数据写入数据库前调用slugify库,把标题这类可读字段转换成URL友好的slug格式写入对应字段。没有安装slugify依赖的前提下,就算配置了生命周期逻辑也会运行失败,根本完成不了slug赋值动作。
修复操作

按以下步骤操作即可解决:

  • 进入Strapi项目根目录,安装slugify依赖:
    # npm用户执行
    npm install slugify
    # yarn用户执行
    yarn add slugify
    
  • 找到video内容类型对应的生命周期配置文件,路径为src/api/video/content-types/video/lifecycles.js,如果该文件不存在直接新建即可。
  • 在文件中写入slug自动生成逻辑,以下示例默认用视频的title字段作为slug生成源,可以根据自己实际的字段名调整:
    const slugify = require('slugify');
    
    module.exports = {
      // 新建条目时自动生成slug
      async beforeCreate(event) {
        const { data } = event.params;
        if (data.title && !data.slug) {
          data.slug = slugify(data.title, {
            lower: true,
            strict: true,
            remove: /[*+~.()'"!:@]/g
          });
        }
      },
      // 更新条目时同步更新slug
      async beforeUpdate(event) {
        const { data } = event.params;
        if (data.title) {
          data.slug = slugify(data.title, {
            lower: true,
            strict: true,
            remove: /[*+~.()'"!:@]/g
          });
        }
      }
    };
    
  • 保存文件后重启Strapi服务,之后新建、编辑视频内容时slug就会自动填充,接口请求就能正常返回slug值。

注意:修复前已经创建的存量视频数据不会自动补填slug,需要手动编辑每条存量内容触发保存逻辑,或者写批量脚本统一回填。

Strapi后台配置截图
GET接口返回截图

内容的提问来源于stack exchange,提问作者Артём Рачук

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 13:45:30