Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果属性未定义,请跳到“其他”_Javascript_Mysql_Node.js_Discord.js - Fatal编程技术网

Javascript 如果属性未定义,请跳到“其他”

Javascript 如果属性未定义,请跳到“其他”,javascript,mysql,node.js,discord.js,Javascript,Mysql,Node.js,Discord.js,我有一个创建团队并将数据放入数据库的功能。现在,我试图检查团队是否已经存在,如果它确实存在,那么用消息回复。我的if语句有问题 如果结果为[0]。团队名称==团队名称 当结果[0].teamname未定义时,它将显示无法读取未定义的属性“teamname”。它将忽略其他内容并引发错误。我怎样才能使自己不忽略其他人 下面是我用来创建团队的函数 function createTeam(teamName, members, message) { teamName = teamName.replace(

我有一个创建团队并将数据放入数据库的功能。现在,我试图检查团队是否已经存在,如果它确实存在,那么用消息回复。我的if语句有问题

如果结果为[0]。团队名称==团队名称

当结果[0].teamname未定义时,它将显示无法读取未定义的属性“teamname”。它将忽略其他内容并引发错误。我怎样才能使自己不忽略其他人

下面是我用来创建团队的函数

function createTeam(teamName, members, message) {
teamName = teamName.replace("_", " ");
let insertTeam = `INSERT INTO teams (teamname) VALUES ('${teamName}');`;

db.select(`SELECT id_t, teamname FROM teams WHERE teamname = '${teamName}'`, function(err, result) {
    if (err) {
        throw err;
    } else {
        if (result[0].teamname == teamName) {
            if (message.guild !== null) message.delete();

            message.reply("this team already exists!");
        } else {
            db.query(insertTeam);

            db.select(`SELECT id_t FROM teams WHERE teamname = '${teamName}'`, function(err, result) {
                if (err) {
                    throw err;
                } else {
                    for (let i = 0; i < members.length; i++) db.query(`INSERT INTO team_user (user, team) VALUES ('${members[i]}' , ${result[0].id_t})`);
                }
            });

            if (message.guild !== null) message.delete();

            let newTeam = new Discord.RichEmbed()
            .setThumbnail("https://cdn.discordapp.com/emojis/542789472421675028.png?v=1")
            .setColor("#15f153")
            .addField("New team has been created!", `Team ${teamName} has been created with total of ${members.length} members!\nGood luck!`);

            message.channel.send(newTeam);
        }
    }
});
到目前为止,我尝试了什么:

正在检查结果[0]。团队名称是否未定义 检查结果长度是否不是0 try-catch语句
如果结果[0]&&result[0]。团队名称==团队名称


首先,您需要检查结果[0]是否未定义

如果结果[0]&&result[0]。teamname==teamname


首先,您需要检查结果[0]是否未定义

如果结果是具有多个值的数组,那么您需要迭代其中的每一个值,您可以为此使用filter array方法:

var found = result.filter((row) => row.teamname == teamName);

if (found.length) {

}
如果结果未定义,您也可以在注释检查中提到@ThomasKleßen:

var found = result && result.filter((row) => row.teamname == teamName).length;

if (found) {

}

如果结果是具有多个值的数组,则需要迭代其中的每一个值,可以使用filter array方法进行此操作:

var found = result.filter((row) => row.teamname == teamName);

if (found.length) {

}
如果结果未定义,您也可以在注释检查中提到@ThomasKleßen:

var found = result && result.filter((row) => row.teamname == teamName).length;

if (found) {

}
你需要适应这种情况。这意味着,在检查结果的属性之前,首先要检查结果是否存在

例如,您的代码应该如下所示:

if (result && result[0] && result[0].teamname == teamName) {
    //Do something
}
你需要适应这种情况。这意味着,在检查结果的属性之前,首先要检查结果是否存在

例如,您的代码应该如下所示:

if (result && result[0] && result[0].teamname == teamName) {
    //Do something
}

您始终可以使用默认值

if ((result || [{}])[0].teamname == teamName)

如果结果为falsy,它将默认为一个空对象数组,这将允许数组访问和点表示法工作,但相等将失败。

您始终可以使用默认值

if ((result || [{}])[0].teamname == teamName)

如果结果为falsy,它将默认为空对象的数组,这将允许数组访问和点表示法工作,但相等将失败。

您的结果对象是否具有行计数属性?我不认为您真的需要从结果中检查团队名称,您已经在按团队名称进行查询了。您只需要检查从结果返回的行数是否为>=1ifresult&&result[0]&&result[0]。teamname&&result[0]。teamname==teamname应该这样做。如果任何条件返回false,它就会短路,而不是继续查找可能不存在的对象的teamname属性。您的结果对象是否有具有行计数的属性?我不认为您真的需要从结果中检查团队名称,您已经在按团队名称进行查询了。您只需要检查从结果返回的行数是否为>=1ifresult&&result[0]&&result[0]。teamname&&result[0]。teamname==teamname应该这样做。如果任何条件返回false,它就会短路,而不是继续查找可能不存在的对象的teamname属性;我肯定你忘了检查结果哦,好吧。。。我现在觉得自己很愚蠢。帮了忙,非常感谢!尝试您的代码,结果=未定义;我肯定你忘了检查结果哦,好吧。。。我现在觉得自己很愚蠢。帮了忙,非常感谢!