NodeJS检查记录是否存在

时间:2014-09-14 11:29:30

标签: mysql node.js record exists

我的剧本有点麻烦。

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!"); }

有谁知道我犯了哪个错误?

真诚的桐人

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

要检查记录是否可在收集时使用,或者只是按照以下示例

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