欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > MongoDB 图片 URL 存储异常问题解决方案

MongoDB 图片 URL 存储异常问题解决方案

2025/4/27 7:13:51 来源:https://blog.csdn.net/m0_63949203/article/details/147501086  浏览:    关键词:MongoDB 图片 URL 存储异常问题解决方案

项目场景:

在开发一个在线考试系统时,前端需要提交学生的答题截图到后端,后端使用 MinIO 存储图片并保存图片 URL 到 MongoDB 数据库。系统需要支持多次提交图片,并将所有图片 URL 以数组形式存储在 MongoDB 的 screenShot 字段中。

问题描述

当存储少量图片时,URL 显示正常(如 @http://10.100.157.90:9200/test-bucket/exam_1.png),但当图片数量增多后,screenShot 字段存储的内容变成了多层嵌套的 JSON 字符串,包含大量转义字符和斜杠,例如:

"screenShot": ["{\"screenShot\": [\"{\\\"screenShot\\\": [\\\"{\\\\\\\"screenShot\\\\\\\": [\\\\\\\"...\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"]}\"]}"]

原因分析:

  1. 数据序列化问题:每次保存新图片时,系统从数据库获取现有的 screenShot 字段内容,但没有正确处理可能已经存在的 JSON 字符串
  2. 嵌套序列化:每次更新时,整个数组被错误地序列化为 JSON 字符串,然后作为新元素添加到数组中
  3. 缺乏数据清理:系统没有对从数据库读取的已有数据进行清理和验证,导致问题不断累积
  4. MongoDB 操作不当:更新 MongoDB 字段时,可能使用了不恰当的序列化方式

解决方案:

1.使用 MongoDB 的数组操作符(如 $push)直接更新数组,而不是替换整个字段

2.或者使用数据清理(可选,不建议)

预防措施:

  1. 在数据存储前进行严格的格式验证
  2. 添加单元测试验证数据序列化和反序列化逻辑
  3. 对数据库中的现有数据进行定期检查和清理

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词