JSON文件混乱

时间:2018-12-08 14:31:29

标签: javascript node.js json

我正在使用node.js制作一个Twitch机器人,但遇到了一些奇怪的问题。

我建立了一个JSON文件系统,可以通过聊天中的命令进行操作。但是,由于某些原因,JSON文件的格式在输入错误的数据时会陷入混乱(例如,未定义用户或使用字母/字符而不是数字)。格式正确的JSON文件将变成单行怪物,并且在输入更多错误内容时通常会完全弄乱文件内容。

奇怪的是,我为错误的输入设置了检测系统,该系统应返回错误消息并忽略写入JSON文件,但是由于某些原因而无法正常工作(出现错误消息,JSON文件仍然更改)。

我是一个相当新手的程序员,所以如果我愿意的话,请放轻松。

if (userName === "xyz1" || userName === "xyz2") {  // censored for privacy
  if (!args[0] || !args[1]) return client.say(channelName, 'You did not specify the user or the value)!');

  const user = args[0].toLowerCase();
  const giveRaw = args[1];

  if (!giveRaw.match(/^[0-9]+$/)) return client.say(channelName, 'Your amount cannot contain letters/symbols/decimals!');

  const giveInt = parseInt(giveRaw);

  if (pointsjson.hasOwnProperty(user)) {
    pointsjson[user] = {
      points: pointsjson[user].points + giveInt
    }

    fs.writeFile('./system/points.json', JSON.stringify(pointsjson, null, 10), err => {  // write to json
      if (err) throw err;
    });

    client.say(channelName, `Added ${giveInt} coins to ${user}'s balance.`);
  } else if (pointsjson.hasOwnProperty(user) === false) {
    pointsjson[user] = {
      points: giveInt
    }

    fs.writeFile("./system/points.json", JSON.stringify(pointsjson, null, 10), err => {  // write to json
      if (err) throw err;
    });

    client.say(channelName, `Added ${giveInt} coins to ${user}'s balance. (User has no record in database, added points anyways, did you input the name correctly?)`);
  }
} else if (userName !== 'xyz1' && userName !== 'xyz2') return client.say(channelName, "Can't do that broski! (Developer only command.)");

1 个答案:

答案 0 :(得分:0)

解决了问题。显然我在代码中的某个地方弄乱了JSON.stringify(),每次发送消息时都会触发它。我好傻。