我从以下代码中得到一个 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();
}
);
如何将客户端变量传递给我的回调函数?我无法控制 mysql 模块调用回调函数的方式。
最佳答案
你可以 bind
[docs] client
到回调
。在回调中,它将作为 this
然后可用:
client.query(query, callback.bind(client))
和
this.end();
您也可以将其作为第一个参数传递:
client.query(query, callback.bind(null, client))
或
client.query(query, function(err, results) {
callback(client, err, results);
});
其中回调
定义为
function selectCb(client, err, results) {..};
关于javascript - 如何将范围传递给 node-mysql 中的回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9097739/