首页 > 解决方案 > Json 文件从节点脚本中随机损坏

问题描述

我正在制作一个不和谐机器人,它将两个人排在一起进行游戏,它通过在 JSON 文件中包含他们的不和谐 ID、队列状态、对手来执行此操作。每个用户看起来像这样:

{
    "discordId": "296062947329966080",
    "dateAdded": "2019-03-11T02:34:01.303Z",
    "queueStatus": "notQueuing",
    "opponent": null
},

当一个人使用命令排队时,它将“queueStatus”设置为 Queuing,当发现另一个人使用 Queuing 时,它会将对手设置为该人,并告诉两个用户他们是对手。问题是 JSON 文件在更改时会随机损坏,并且底部会发生类似的事情:

            "dateAdded": "2019-03-11T02:34:01.303Z",
            "queueStatus": "notQueuing",
            "opponent": null
        }
    ]
}537"
        }
    ]
}

我唯一的想法是,这是因为同时执行此操作的两个人同时写入文件并损坏它,这fs.writeFileSync将修复它,但是如果我使用fs.writeFileSync整个不和谐机器人的其余部分,它会暂停并停止工作,直到它完成写作这不是一个非常实用的解决方案。

标签: node.jsjsondiscordfsdiscord.js

解决方案


存储在 JSON 文件中的数据应迁移到MongoDB其他数据库。对来自多个作业/源的单个静态文件的 CRUD 操作不是可扩展的解决方案。将此数据存储迁移到数据库将解决这些暂停和停止问题。

通过 freecodecamp.org在Youtube 上查看此视频


但是,如果需要 JSON 文件或仍然首选 JSON 文件,我建议使用EventEmitter创建一个用于读取和写入的阻塞队列。


推荐阅读