Если я могу выполнить «require» внутри обратного вызова в node-mysql, функции модуля добавляются в область обратного вызова или в глобальную область? - PullRequest
1 голос
/ 15 июня 2011

Я использую nodejs и драйвер node-mysql. Я обнаруживаю, что делаю повторяющиеся котельные плиты, такие как

client.query (querystr, queryparams, обратный вызов функции (err, results, fields) {

     if (err){ do err related stuff }
     else { do success related stuff }

}

Подводя итог, в большинстве случаев все просто и повторяется, за исключением того, что происходит в случае успеха, который сильно варьируется в зависимости от запроса и контекста. Так что я хотел бы заключить все это в одну функцию и передать querystr, queryparams и функцию success.

Проблема: я не могу сделать это, так как это внутри обратного вызова, и я не могу заставить механизм запросов использовать мою функцию успеха, даже если я передаю ее через аргументы обратного вызова.

Так что я думаю, могу ли я выполнить «require» внутри обратного вызова, и если да, будут ли функции из модуля «required» добавлены в глобальную область или область обратного вызова? Я надеюсь, что последнийB

1 Ответ

2 голосов
/ 15 июня 2011

Вы можете назначить переменные для области видимости модуля, которая является приближением к «глобальному», например:

function a() { module.sys = require("sys"); }
function b(cb) { cb() };
b(a);
console.log(sys);
...