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

使用Axios向Strapi提交JSON,participantLoggingData字段始终为空

问题解决:Strapi JSON字段始终返回null的排查方案

1. 核对Content Type字段配置

  • 打开Strapi后台的Content Type Builder,找到Participant类型的participantLoggingData字段:
    • 确认字段的API ID完全是participantLoggingData,没有拼写错误(大小写、下划线都要严格对应);
    • 检查字段是否开启了Allow null,若不需要存null可关闭,但核心是确认字段存储规则未限制写入;
    • 确保字段类型确实是JSON,而非Text等其他类型。

2. 修正请求体格式(最常见问题)

Strapi v4的CRUD接口要求请求数据必须包裹在data对象内,忽略这个结构会导致字段无法被识别:

  • 正确的POST请求体示例:
    {
      "data": {
        "participantLoggingData": {
          "logType": "user_action",
          "details": {"action": "submit", "timestamp": 1699999999}
        }
      }
    }
    
  • 用Postman测试时,务必设置请求头Content-Type: application/json,避免格式解析错误;
  • Axios会自动处理JSON序列化,无需用JSON.stringify()包裹数据,直接传递上述格式的JavaScript对象即可。

3. 排查自定义控制器/生命周期钩子

如果自定义了Participant的控制器或生命周期函数:

  • 检查create/update控制器代码,确保ctx.request.body.data中的participantLoggingData字段被正确传递给服务层方法;
  • 比如自定义控制器中,调用strapi.service('api::participant.participant').create()时,参数要包含data: ctx.request.body.data,不能遗漏该字段;
  • 检查生命周期钩子(如beforeCreate)是否存在修改或清空participantLoggingData的逻辑。

4. 验证数据库字段类型

直接查看数据库中的participants表:

  • 确认participantLoggingData字段的类型为JSON(MySQL)或jsonb(PostgreSQL);
  • 如果字段类型是VARCHAR或其他非JSON类型,会导致Strapi无法存储JSON数据,从而默认存null。这种情况需删除字段重新创建,或手动修改数据库字段类型。

5. 升级Strapi到稳定版

部分旧版本的Strapi存在JSON字段存储bug,尝试升级到当前最新的v4稳定版本,再测试字段写入是否正常。

内容的提问来源于stack exchange,提问作者GipfelHyperon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:05:51