如果我可以在node-mysql中的回调中执行“require”,那么模块函数是否会被添加到回调范围或全局范围?

时间:2011-06-15 08:10:23

标签: mysql node.js callback require commonjs

我正在使用nodejs和node-mysql驱动程序。我发现自己正在做重复的锅炉板,如

client.query(querystr,queryparams,function callback(err,results,fields){

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

}

大多数时候,一切都是直截了当的重复,除了成功后发生的变化,根据查询和上下文的不同而变化很大。 所以我想将所有这些封装在一个函数中,并传入一个querystr,queryparams和一个成功函数。

问题:我不能这样做,因为这是在一个回调中,我不能让查询引擎使用我的成功函数,即使我通过回调参数传递它。

所以我想我可以在回调中做一个“require”,如果是这样,“required”模块中的函数会被添加到全局作用域还是回调作用域?我希望后者B

1 个答案:

答案 0 :(得分:2)

您可以将变量分配给模块范围,这是“全局”的近似值,如下所示:

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