【问题标题】:Json file randomly corrupting from node scriptJson 文件从节点脚本中随机损坏
【发布时间】:2019-08-01 08:25:34
【问题描述】:

我正在制作一个不和谐机器人,它可以将两个人排在一起进行游戏,它通过在 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 整个其余部分discord bot 会暂停并停止工作,直到完成写入,这不是一个非常实用的解决方案。

【问题讨论】:

    标签: node.js json discord fs discord.js


    【解决方案1】:

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

    在 freecodecamp.org 的 Youtube 上查看此视频


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

    【讨论】:

    • 虽然我同意这个答案,但这里 MongoDB 是不是有点矫枉过正?
    猜你喜欢
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    相关资源
    最近更新 更多