如何使用NodeJS循环访问JSON文件

时间:2018-05-27 20:12:34

标签: javascript node.js discord.js

我正在使用Discord机器人,为高级会员提供命令。

buyers.json:

buyers.json:

{
  "buyers": [
    {
      "id": "331499609509724162"
    },
    {
      "id": "181336616164392960"
    },
    {
      "id": "266389854122672128"
    }
  ]
}

代码片段:

case "spotify":
            var uID = message.author.id;
            for (let i = 0; i < ftpr.buyers.length; i++) {
                if (uID === ftpr.buyers[i]) {
                    var _embed = new Discord.RichEmbed()
                        .setTitle("Spotify")
                        .addField("Username", "testsda@yahoo.com")
                        .addField("Password", "ithastobe8")
                        .setColor(0x00FFFF)
                        .setFooter("Sincerely, LajgaardMoneyService")
                        .setThumbnail(message.author.avatarURL);
                    message.author.send(_embed);
                    console.log(message.author + " Just used the command !spotify")
                }
                
            }
            
            break;

除了for循环和if语句之外,一切都有效。就像它没有得到id一样。

var fptr = require("./buyers.json");

修改 我的json文件看起来像这样:

{
  "buyers": [
    {
      "id": "331499609509724162"
    },
    {
      "id": "181336616164392960"
    },
    {
      "id": "266389854122672128"
    }
  ]
}

它有一些人的身份。 在我的app.js var file = require("./file.json");用于导入。让我们说我更改了其中一个ID然后我必须重新加载app.js来更新它。如果我不这样做,我的检查机制没有使用file.json的更新版本 每次使用函数时,我该如何更新文件?

2 个答案:

答案 0 :(得分:1)

您正在将 uID (我假设是一个字符串)与数组中的每个对象(包含字符串)进行比较。

尝试与买家对象的id属性进行比较:

if (uID === ftpr.buyers[i].id) { }

答案 1 :(得分:0)

确保message.author.id和ftpr.buyers id具有相同的类型,ftpr.buyers是包含id为string的对象数组。你应该通过message.author.id

来控制。console.log(typeof message.author.id,message.author.id)的类型

您可以通过在切换案例之前使用包含ID的字符串数组来简化代码:

const ids = ftpr.buyers.map(b = b.id);//this is now ["331499609509724162",...]

  case "spotify":
      if (ids.includes(message.author.id)) {
        var _embed = new Discord.RichEmbed()
          .setTitle("Spotify")
          .addField("Username", "testsda@yahoo.com")
          .addField("Password", "ithastobe8")
          .setColor(0x00FFFF)
          .setFooter("Sincerely, LajgaardMoneyService")
          .setThumbnail(message.author.avatarURL);
        message.author.send(_embed);
        console.log(message.author + " Just used the command !spotify")
      }

    break;