我如何将范围传递给node-mysql中的callback?

我得到一个client is not defined错误,出以下代码:

 var mysql = require('mysql'); var conf = { 'database':'database', 'user':'user', 'password':'password' }; function mysqlQuery(mysql, conf, query, callback) { var client = mysql.createClient({ user:conf.user, password:conf.password }); client.query('USE ' + conf.database, function () { client.query(query, callback); }); } mysqlQuery( mysql, conf, 'SELECT * FROM users;', function selectCb(err, results) { if (err) { throw err; } console.log(results); client.end(); } ); 

我怎样才能将客户端variables传递给我的callback函数? 我无法控制如何调用callback函数,因为它是由mysql模块调用的。

你可以bind [docs] client callback 。 在callback内部,它将会是this

 client.query(query, callback.bind(client)) 

 this.end(); 

你也可以把它作为第一个parameter passing给它:

 client.query(query, callback.bind(null, client)) 

要么

 client.query(query, function(err, results) { callback(client, err, results); }); 

callback被定义为

 function selectCb(client, err, results) {..};