如何使用 sqlite 在 javascript 中创建 if 语句

所以我最近在 discord js 中使用 warn 命令制作了这段代码,但是有一个问题,我的 if 语句不能像我想要的那样工作,如果值不存在,我希望它是 return message.channel.send("该用户没有记录!"); 因为我从未尝试过在 javascript 上使用 sqlite,而且我只知道在 c# 上使用 sqlite


const con = require("../../sql.js");

con.all(`SELECT * FROM warnings WHERE username = ? AND userID = ?`, User.tag, User.id, (err, rows) => {

    rows.forEach(r => {

        if (!rows) {

            message.channel.send("NO U");

        }

        else {

            let moderator = (r.moderator);

            let modID = (r.modID);

            let reason = (r.reason);

            let time = (r.time);


            let Avatar = User.displayAvatarURL();


            let Embed = new MessageEmbed()

                .setTitle(`User warnings!`)

                .setDescription(

                    `These is all the warnings which have been issued to ${User.tag}!`)

                .setColor(`RED`)

                .setThumbnail(Avatar)

                .addFields({

                    name: "Moderator",

                    value: `${moderator}`,

                    inline: true

                }, {

                    name: "Username",

                    value: `${User.tag}`,

                    inline: true

                }, {

                    name: "Reason",

                    value: `${reason}`,

                    inline: true

                }, {

                    name: "When was warned",

                    value: `${time}`,

                    inline: true,

                });


            message.channel.send(Embed).then(msg => {

                msg.delete({

                    timeout: 15000

                });

                message.delete({

                    timeout: 3000

                });

            })

        }

    })

})


交互式爱情
浏览 79回答 2
2回答

慕标琳琳

将if语句移出forEach循环。前:rows.forEach(r => {  if (!rows) {      message.channel.send("NO U");  }后:if (rows.length === 0) {    return message.channel.send("NO U");}rows.forEach(r => {                   正如其他评论中指出的那样,更改!rows为,rows.length === 0因为当找不到任何行时库返回一个空数组。

白猪掌柜的

我会重构一些东西,所以有一个单独的函数可以将用户和数据库中的行转换为 MessageEmbed。这样就很容易首先尝试将任何警告映射到消息,然后查看是否生成了任何警告,如果没有生成,则发送其他消息。请注意,即使是空数组在 JavaScript 中也是真实的,因此您需要检查.length.const con = require("../../sql.js");function warningRowToMessage(User, row) {  const { moderator, reason, time } = row;  return new MessageEmbed()    .setTitle(`User warnings!`)    .setDescription(`These is all the warnings which have been issued to ${User.tag}!`)    .setColor(`RED`)    .setThumbnail(User.displayAvatarURL())    .addFields(      {        name: "Moderator",        value: `${moderator}`,        inline: true,      },      {        name: "Username",        value: `${User.tag}`,        inline: true,      },      {        name: "Reason",        value: `${reason}`,        inline: true,      },      {        name: "When was warned",        value: `${time}`,        inline: true,      },    );}con.all(`SELECT * FROM warnings WHERE username = ? AND userID = ?`, User.tag, User.id, (err, rows) => {  const replyMessages = rows.map((r) => warningRowToMessage(User, r));  if (!replyMessages.length) {    message.channel.send("NO U");    return;  }  message.delete({    timeout: 3000,  });  replyMessages.forEach(async (replyMessage) => {    const msg = await message.channel.send(replyMessage);    msg.delete({      timeout: 15000,    });  });});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript