2014-09-14 3 views
0

У меня есть небольшая проблема с моим скриптом.NodeJS Проверьте, существует ли запись

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 { client.say(channel, "Ein Fehler ist aufgetreten!"); }

Кто-нибудь знает, где я допустил ошибку?

С уважением Kazuto

ответ

0

Запрос MySQL не синхронный/блокировки. Вам необходимо передать обратный вызов на query() и переместить логику после запроса внутри этого обратного вызова. Взгляните на first example в mysql readme.

+0

Ой, спасибо. Я полностью забыл об этом: D – Kazuto

+0

Я изменил его сейчас на: 'connection.query ('SELECT 1 AS check FROM commands WHERE channel ="' + channel + '"AND command ="' + args [1] + ' « 'функция (ERR, строки, поля) { \t \t \t \t \t \t \t если (строки [0] .Проверить === NULL)', но это дает мне следующую ошибку TypeError:. не удается прочитать свойство' 0 'of undefined' – Kazuto

+0

Сначала вы должны сначала проверить свойство 'err'. Я уверен, что он установлен на ошибку. – mscdex

0

Для проверки записи доступен на коллекции или не просто следовать в следующем примере,

var query=connection.query("select * from table") 
q 
.on('error') { 
...`enter code here` 
} 
.on('result') { 
    //check for null 
} 
}; 
Смежные вопросы