Jul*_*lio 15 mysql callback node.js
我试图找出将自定义数据传递给查询调用的正确方法,以便在回调中使用.我在nodejs(所有最新版本)中使用MySQL库.
我调用了connection.query(sql,function(err,result){...});
我找不到一种方法来1)将自定义数据/参数传递给调用,以便2)它可以在调用回调时使用.那么这样做的正确方法是什么?
我有以下(伪代码):
...
for (ix in SomeJSONArray) {
sql = "SELECT (1) FROM someTable WHERE someColumn = " + SomeJSONArray[ix].id;
connection.query(sql, function (err, result) {
...
var y = SomeJSONArray[ix].id;
};
}
Run Code Online (Sandbox Code Playgroud)
从上面的代码中,我需要能够将查询中使用的"ix"的当前值传递给回调本身.
我怎么做?
Chr*_*ris 30
如果您使用的是node-mysql,请按照文档说:
connection.query(
'SELECT * FROM table WHERE id=? LIMIT ?, 5',[ user_id, start ],
function (err, results) {
}
);
Run Code Online (Sandbox Code Playgroud)
文档还具有正确转义字符串的代码,但在查询调用中使用数组会自动为您进行转义.
https://github.com/felixge/node-mysql
要用完整的答案/示例来回答最初的问题,请使用匿名函数包装回调函数,如果要传入数据,则会立即创建包含"快照"的作用域.
var ix=1;
connection.query('SELECT 1',
(function(ix){
return function(err, rows, fields) {
console.log("ix="+ix);
console.log(rows);
};
})(ix));
Run Code Online (Sandbox Code Playgroud)
对于那些刚接触这个概念的人,就像我20分钟前一样,最后的})(ix)); 是传递给(function(ix){的外部var ix = 1值.可以重命名(function(abc){如果你更改了console.log("ix ="+ abc);
fwiw(感谢Chris提供的填充空白以获得解决方案的链接)
| 归档时间: |
|
| 查看次数: |
55273 次 |
| 最近记录: |