【问题标题】:Writing a JSON file编写 JSON 文件
【发布时间】:2020-12-15 14:27:52
【问题描述】:

所以我正在编写一个 json 文件,当我将 2 个用户写入一个文件时,用户 B 替换了用户 A 应该是:

{
    "user": {
        "user": "user1",
        "id": "id"
    },
    "user": {
        "user": "user2",
        "id": "id2"
    }
}

但它只是将 user1 替换为 user2。

代码:

    if(command === "add"){
        let mentionedUser = message.mentions.users.first()
        var user = mentionedUser.username
        var jsonData = {
            users:{
                user: user,
                id: mentionedUser.id
            }
        }
        fs.writeFileSync("./config.json", JSON.stringify(jsonData, null, 4), err => {
            if(err) throw err;
            message.channel.send("ID Pushed")
        })

【问题讨论】:

  • 你不能有两个同名的键。使用用户数组。
  • 你这是什么意思?
  • 我的意思是,通过使用相同的名称,即user,您会覆盖旧值,而不是添加新值。
  • @user6528273 那么我该如何让它覆盖它呢?
  • 使用用户数组

标签: bots discord.js fs


【解决方案1】:

fs.writeFileSync 的默认模式是覆盖整个文件。您可以使用appendFileSync 或在fileWriteSync 中设置一个选项来附加新文本:

fs.writeFileSync('config.json', JSON.stringify(jsonData, null, 4), {flag: 'a'}, err => {...});
fs.appendFileSync('config.json', JSON.stringify(jsonData, null, 4), err => {...});

您也可以使用 appendFilefileWrite 异步执行此操作。还有一个不错的StackOverflow Question

编辑

您也可以导入文件。然后您可以创建对象并将其附加到数据结构中。最后,您可以将结果写回文件。

【讨论】:

  • 我可以做"IDS": { "id": "id1", "id": "id2" } 吗?
  • 什么意思?你打算用它做什么?您可以简单地将其写入文件中。
  • 基本上我有 *add 命令,所以当我运行它时。 *添加 Nicholas,它将他的 id 添加到 JSON 文件中,如果我想再次运行相同的命令 *add Swirls,它将用我的 id 替换他的 id
  • 但是用户名是一样的吗?
  • 不是,它也取代了用户。
猜你喜欢
  • 2018-12-15
  • 1970-01-01
  • 1970-01-01
  • 2021-01-17
  • 1970-01-01
  • 1970-01-01
  • 2018-10-11
  • 2014-09-21
  • 2022-01-19
相关资源
最近更新 更多