Javascript 交叉引用JSON和MySQL?

Javascript 交叉引用JSON和MySQL?,javascript,mysql,node.js,json,discord.js,Javascript,Mysql,Node.js,Json,Discord.js,我为discord机器人编写了一个“购买”功能,它将项目的id插入mysql中的相应表中 示例购买: const join = args.join(" ") let item = JSON.parse(fs.readFileSync('commands/economy/resources/items.json', "utf8")); //Horses const Horse1 = item.Horse1 //Buy Horse1 if (join ===

我为discord机器人编写了一个“购买”功能,它将项目的
id
插入mysql中的相应表中

示例购买:

const join = args.join(" ")
let item = JSON.parse(fs.readFileSync('commands/economy/resources/items.json', "utf8"));


//Horses
const Horse1 = item.Horse1


        //Buy Horse1
        if (join === Horse1.name) {

            let itemName = Horse1.name
            let itemLuck = Horse1.luck
            let itemId = Horse1.ID.toString()
            let itemPrice = Horse1.price.toString()

            //Account Check
            if (rows.length < 1) { return message.channel.send("You do not have an account with The Iron Bank. Use ``;start`` to open one.") };
            //Item Check
            if (rows[0].horse === itemId) { return message.channel.send(`❌ | You already have a ${itemName}!`) }
            //Money Check
            if (rows[0].bank < itemPrice) { return message.channel.send(`You do not have enough coins in your account to buy **${itemName}**. It costs ${itemPrice} coins. You have ${rows[0].bank} coins`) };


            //DB Update
            con.query(`UPDATE economy SET horse = '${itemId}', horseluck = '${itemLuck}', bank = bank-${itemPrice} WHERE user = ${message.author.id}`)

            //Bought
            message.channel.send(`✅ | Purchased ${itemName} for ${itemPrice} coins.`)
        };
但是上面打印的是马的ID,而不是
message.channel.send
中的名称。如何将MySQL中的ID与JSON中的ID交叉引用,并将名称打印在
message.channnel.send

我的JSON文件示例:
{
“Horse1”:{
“ID”:1,
“名称”:“多恩沙马”,
“描述”:“壮丽的野兽”,
“类型”:“马”,
“价格”:“100000”,
“运气”:“5.0”
},
“Horse2”:{
“ID”:2,
“姓名”:“阿拉伯”,
“说明”:“首选战车坐骑”,
“类型”:“马”,
“价格”:“50000”,
“运气”:“2.0”
},
“武器1”:{
“ID”:1,
“名称”:“长爪”,
“描述”:“莫蒙家族的祖传武器瓦莱里亚钢剑”,
“类型”:“武器”,
“价格”:“100000”,
“运气”:“5.0”
},
“武器2”:{
“ID”:2,
“姓名”:“Oathkeeper”,
“描述”:“用豪斯斯塔克巨剑制成的瓦莱里亚钢剑”,
“类型”:“武器”,
“价格”:“50000”,
“运气”:“2.0”
},
}
设法解决了这个问题:

使用
object.values(item)
将JSON对象值转换为数组,然后在将行[0]值转换为INT后使用ID对数组进行索引,如下所示。如果该值未定义(在本例中为null,因为它不能有JSON中指定的ID以外的任何其他值),请将其视为“无”


我将每个项目的ID更改为具有不同的ID,并将mySQL中的字段类型更改为
int
。所以在本例中,它将是:
函数getItemName(id){return Object.values(items)[id-1].name}let horseName=(isNaN(horse)| horse==null)?“无”:getItemName(马);让weaponName=(isNaN(武器)| |武器==null)?“无”:getItemName(武器);设ArmorName=(isNaN(Armor)| | Armor==null)?“无”:getItemName(装甲)
  //Direct to start if not in DB
    if (rows.length < 1) {

        return message.channel.send("You do not have an account with The Iron Bank. Use ``;start`` to open one.")

    };

    let horse = rows[0].horse;
    let weapon = rows[0].weapon;
    let armour = rows[0].armour;
    let luck = (rows[0].horseluck + rows[0].weaponluck + rows[0].armourluck)
    console.log()

    return message.channel.send(`**Horse**: ${horse}\n**Weapon**: ${weapon ? weapon : "None"}\n**Armour**: ${armour ? armour : "None"}\n**Luck Bonus**: ${luck ? "+"+luck+"%" : "None"}`);
    let horse = rows[0].horse;
    let weapon = rows[0].weapon;
    let armour = rows[0].armour;
    let luck = (rows[0].horseluck + rows[0].weaponluck + rows[0].armourluck)

    function getItemName(id){
        return (id == undefined)? "None" : Object.values(item)[id - 1].name;
    }

    let horseName = getItemName(parseInt(horse))
    let weaponName = getItemName(parseInt(weapon) + 5)
    let armourName = getItemName(parseInt(armour) + 10)

    //5 items of each type


    return message.channel.send(`**Horse**: ${horseName}\n**Weapon**: ${weaponName}\n**Armour**: ${armourName}\n**Luck Bonus**: ${luck ? "+"+luck+"%" : "None"}`);