开发者

关于MongoDB图片URL存储异常问题以及解决

目录
  • MongoDB图片URL存储异常问题
    • 项目场景
    • 问题描述
    • 原因分析
    • 解决方案
    • 预防措施js
  • 总结

    MongoDB图片URL存储异常问题

    项目场景

    在开发一个在线考试系统时,前端需要提交学生的答题截图到后端,后端使用 MinIO 存储图片并保存图片 URL 到 MongoDB 数据库。

    系统需要支持多次提交图片,并将所有图片 URL 以数组形式存储在 MongoDB 的 screenShot 字段中编程

    问题描述

    当存储少量图片时,URL 显示正常(如 @http://10.100.15http://www.devze.com7.90:9200/test-bucket/exam_1.png

    但当图片数量增多后,screenShot 字段存储的内容变成了多层嵌www.devze.com套的 jsON 字符串,包含大量转义字符和斜杠

    例如:

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

    原因分析

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

    解决方案

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

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

    预防措施

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

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜