繁体   English   中英

Discord.js 从 JSON 文件中获取数据返回“未定义”

[英]Discord.js getting data from a JSON file returns “undefined”

我正在尝试从orders.json文件访问数据。 它应该列出所有orders ,但是,当我尝试这样做时,它会显示“未定义”,如下图所示:

在此处输入图像描述

当 JSON 文件中没有任何orders时,它也会执行相同的操作:

在此处输入图像描述

.list命令的代码:

const fsn = require("fs-nextra");
const Discord = require('discord.js');
module.exports = {
    name: 'list',
    description: 'List of all orders',
    aliases: ['allorders'],
    execute(message) {
        

        fsn.readJSON("./orders.json").then((orderDB) => {
            let orderString;
            for(let x in orderDB) {
                orderString = orderString + "`" + x + "`: " + orderDB[x].status + "\n";
                // add newline character at the end to display each "order" on a separate line
            }
            const exampleEmbed = new Discord.MessageEmbed()
                .setTitle('Here\'s a list of the current orders and their status.')
                .setDescription(orderString)
                .setTimestamp()
                .setFooter(message.member.user.tag, message.author.avatarURL());
            message.channel.send(exampleEmbed);
        });
    }
}

json 文件中的数据存储如下:

{
    "tip": {
        "orderID": "tip",
        "userID": "734532125021307001",
        "guildID": "745409671430668389",
        "guild": "Cybers Taco Stand Server",
        "channelID": "746423099871985755",
        "order": "a",
        "customer": "Aro#1221",
        "status": "Unclaimed",
        "ticketChannelMessageID": "not set"
    },
}

这很明显,您定义orderString但没有为其分配值,然后您做了:

orderString = orderString + "`" + x + "`: " + orderDB[x].status + "\n";

但是orderString没有定义,所以它肯定会说undefinedtip

未赋值的变量是undefined类型。 当您声明变量orderString并且不分配值时,它将是undefined

不幸的是,JavaScript 允许通过简单地将非字符串转换为字符串来连接不同的类型。 在这种情况下, undefined将是"undefined"

 let undef; let str = 'string'; console.log(undef + str)

要解决您的问题,您可以为orderString分配一个空字符串:

let orderString = '';

检查下面的片段。 我还尝试使用模板文字来简化字符串连接。

 const orderDB = { "tip": { "orderID": "tip", "userID": "734532125021307001", "guildID": "745409671430668389", "guild": "Cybers Taco Stand Server", "channelID": "746423099871985755", "order": "a", "customer": "Aro#1221", "status": "Unclaimed", "ticketChannelMessageID": "not set" }, "ysh": { "orderID": "ysh", "userID": "734532125021307001", "guildID": "745409671430668389", "guild": "Cybers Taco Stand Server", "channelID": "746423099871985755", "order": "a", "customer": "Aro#1221", "status": "Ready", "ticketChannelMessageID": "not set" }, } let orderString = ''; for (let key in orderDB) { orderString += `\`${key}\`: ${orderDB[key].status}\n`; } console.log(orderString)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM