2016-12-04 3 views
1

Я писал программу и столкнулся с ошибкой, которую Google не приносит результатов. Я использую async.series для выполнения нескольких запросов последовательно. Однако мой первый запрос возвращает действительно странную ошибку, для которой Google не возвращает никаких результатов. Любая помощь приветствуется!Parser бросает функцию как ошибку при запросе базы данных MySQL?

Ошибка:

C:\path_to_root_project_folder\node_modules\mysql\lib\protocol\Parser.js:78 
     throw err; // Rethrow non-MySQL errors 
     ^
function() { 
    var args = arguments, 
     index = -1, 
     length = nativeMax(args.length - start, 0), 
     array = Array(length); 

    while (++index < length) { 
     array[index] = args[start + index]; 
    } 
    index = -1; 
    var otherArgs = Array(start + 1); 
    while (++index < start) { 
     otherArgs[index] = args[index]; 
    } 
    otherArgs[start] = transform(array); 
    return apply(func, this, otherArgs); 
    } 

Код:

async.series([ 
     function(callback){ //generate uuid 
      console.log("generating uuid.."); 
      newUuid = uuid(); //these are also defined 
      console.log("$$$$$$$$$$$$ " + email); //email is defined in the function this async series is nested in 
      callback(null); 
      return; 
     }, 
     function(callback){ 
      console.log("$$$$$$$ querying email"); 
      pool.query("SELECT * FROM users WHERE INSTR(email, '" + email + "') > 0", function(err, rows){ //I think it errors out here? 
       if(err) { 
        throw err; 
       } 
       if(rows[0] != null){ 
        res.json({ //res is defined 
        status: 200, 
        success: "EmailExists" 
       }); 
       res.end(); 
       duplicate = true; //duplicate is defined 
       callback(err); 
       } 
       callback(err); 
      }); 

     }], function(error){if(error) throw err;}); 

EDIT: После дальнейшего изучения с точки останова, я обнаружил, что ошибка была дальше вниз, в другой SQL запрос. По какой-то причине, ошибка броска является «[объект Object]

Кода:. (Это после последней асинхронной серии в моем исходном коде

function(callback){ 

     pool.query("SELECT * FROM chapters WHERE INSTR(school, '" + school + "') > 0", function(err, rows){ 
      if(err) throw err; 
      debugger; 
      callback(rows); 
     }); 
    }, 
+0

Ваш запрос, будучи подверженным SQL-инъекции, на самом деле выглядит логически корректным. Можете ли вы пройти через свой код с помощью отладчика, чтобы увидеть, что происходит? –

+0

что в 'err'? – xShirase

+0

@TimBiegeleisen После беспорядка с отладчиком на некоторое время, я обнаружил, что на самом деле ошибка была выброшена из дальнейшего кода. Я отредактировал сообщение с соответствующим кодом и ошибкой. –

ответ

0

у Вас есть ошибка в вашем SQL, может быть опечатка какой-то, как строка запроса выглядит хорошо, так что ваш throw оператор завершает программу Согласно MDN:.

The throw statement throws a user-defined exception. Execution of the current function will stop (the statements after throw won't be executed), and control will be passed to the first catch block in the call stack. If no catch block exists among caller functions, the program will terminate.

Я предлагаю вам либо добавить поймать блок, или просто войти свою ошибку, и вы будете уметь видеть, что происходит.

+0

Тот же SQL-запрос (буквально скопированный в скобки) работает в другой функции. Кроме того, он по-прежнему дает ту же ошибку, когда я использую «SELECT * FROM users», который не должен иметь никакой опечатки. Я также проверил, что моя таблица называется «пользователями». –

+0

Что находится в объекте с ошибкой? можете ли вы установить полный стек ошибок и связанные с ним линии/функции? Это определенно странно – xShirase

+0

См. Мое редактирование. –