2016-07-30 2 views
0

Привет, великие кодеры Stackoverflow, я попытался избежать запроса mysql в node.js, используя mysql.escape(), pool.escape(), но он возвращает ошибку mysql или пул не определен соответственно. Ниже приведен кодescape mysql query в node.js возвращает ошибку mysql не определен

var mysql=require('mysql'); 
exports.con = mysql.createConnection({ 
// db connections goes here 
}); 


    sql.con.query("INSERT INTO `so_gb`(`user`, `neol`) VALUES ('"+mysql.escape(req.body.urt)+"','"+mysql.escape(req.body.mery)+"')", 
     function(err, user) { 
      if(!err) 
      { 
+0

Я предполагаю, что вы не загружаетесь 'mysql' в каждый файл, который ссылается на нее. – robertklep

+0

'INSERT INTO so_gb (пользователь, neol) VALUES ('" + mysql.escape (req.body.urt) + "', '" + mysql.escape (req.body.mery) + 'Я не знаю, почему но автор mysql-пакета пишет грязный пример с тем же кодом. Чем лучше (безопаснее и чище) использовать заполнители, например '' insert into ... values ​​(?,?) ', [arg1, arg2] '. См. 3-й пример в разделе https://github.com/mysqljs/mysql#escaping-query-values ​​ –

ответ

0

Я предполагаю, что первые 4 строки в одном файле .js и следующие 4 строки в другом файле .js, что, будучи в случае, если вы не можете ожидать, чтобы обратиться к переменной тузд определенные в первом файле из второго файла, вы можете получить доступ только к объектам, которые вы помещаете в объект экспорта.

Вы должны изменить первый файл, как это:

var mysql=require('mysql'); 
exports.con = mysql.createConnection(
// db connections goes here 
}); 
exports.escape = mysql.escape; 

Добавление в этой строке будет сделать функцию MySQL побег доступны через объект экспорта.

А затем измените второй файл, как это:

var con = require('firstFile.js'); 
con.query("INSERT INTO `so_gb`(`user`, `neol`) VALUES ('"+con.escape(req.body.urt)+"','"+con.escape(req.body.mery)+"')", 
    function(err, user) { 
     if(!err) 
     { 

Требовать заявление даст вам доступ к экспорт объект из первого файла. Затем вы можете использовать con.escape(), который вызовет mysql.escape() в первом файле.

Вы можете рассмотреть вопрос о чтении этого ответа на объекте module.export:
What is the purpose of Node.js module.exports and how do you use it?

+0

могу ли я использовать mysql.escape() в приведенном выше коде, он должен быть var mysql = require ('firstFile.js'); – nackolysis

+0

Да, вы можете использовать mysql.escape(), если вы измените строку require на var mysql = require ('firstFile.js'); – James

+0

@nackolysis Однако я бы счел, что плохая практика имеет две переменные с именем mysql с разной функциональностью - это может привести к путанице позже. Переименуйте файл в первом файле в mysql_lib или что-то подобное. – James

Смежные вопросы