【问题标题】:NodeJS Check if record existsNodeJS 检查记录是否存在
【发布时间】:2014-09-14 11:29:30
【问题描述】:

我的脚本有点问题。

if (msg.indexOf('!addcom') === 0) {
            if (typeof args[1,2] !== 'undefined' && args[1].trim() !== '') {
                if(_.indexOf(modlist, user.username) >= 0) {
                    msg.split(" ");
                    check = connection.query('SELECT 1 FROM commands WHERE channel = "'+channel+'" AND command = "'+args[1]+'"');
                    args[2] = args.slice(2).join(" ");
                        if (check === null) {
                            connection.query('INSERT INTO commands (channel, command, message) VALUES ("'+channel+'","'+args[1]+'","'+args[2]+'")');
                        }
                        else if (check === 1) {
                            client.say(channel, "Der Befehl " +args[1]+ " existiert bereits!");
                        }
                        else {
                            client.say(channel, "Ein Fehler ist aufgetreten!");
                        }
                }
                else {
                    client.say(channel, user.username+", du bist kein Moderator und kannst diesen Befehl daher nicht ausführen!");
                }
            }
            else {
                client.say(channel, "Syntax Fehler: !addcom [!Befehl] [Nachricht]");
            }
        }

我想检查是否已经有 channel = "'+channel'" AND command = "'args[1]'" 的记录,因为它们在一起是独一无二的,但由于某种原因它无法正常工作。

要么因为重复条目而崩溃,要么只是跳转到最后一个 else 子句else { client.say(channel, "Ein Fehler ist aufgetreten!"); }

有谁知道我哪里出错了?

真诚的和人

【问题讨论】:

    标签: mysql node.js record exists


    【解决方案1】:

    MySQL 查询不是同步/阻塞的。您需要将回调传递给query(),并在该回调内的查询之后移动逻辑。查看mysql 自述文件中的first example

    【讨论】:

    • 我现在已将其更改为:connection.query('SELECT 1 AS check FROM commands WHERE channel = "'+channel+'" AND command = "'+args[1]+'"', function(err, rows, fields) { if (rows[0].check === null) 但它给了我以下错误。类型错误:无法读取未定义的属性“0”`
    • 您应该始终首先检查err 属性。我敢打赌它设置为错误。
    【解决方案2】:

    为了检查记录是否在收藏中可用或不只是遵循以下示例

    var query=connection.query("select * from table")
    q
    .on('error') {
    ...`enter code here`
    }
    .on('result') {
       //check for null
    }
    };
    

    【讨论】:

      猜你喜欢
      • 2011-02-20
      • 2015-01-21
      • 2012-08-13
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多