在Node.js中,如何将参数传递给MySQL查询回调函数
P粉078945182
P粉078945182 2023-08-22 15:44:32
0
2
681
<p>我正在尝试找出将自定义数据传递给查询调用的正确方法,以便在回调中可用。 我在nodejs中使用MySQL库(所有最新版本)。</p> <p>我有一个调用connection.query(sql, function(err, result) {...});</p> <p>我找不到一种方法来 1) 传递自定义数据/参数给调用,以便在回调被调用时可用。 那么,正确的做法是什么?</p> <p>我有以下伪代码:</p> <pre class="brush:php;toolbar:false;">... 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; }; }</pre> <p>从上面的代码中,我需要能够将查询中使用的"ix"的当前值传递给回调本身。</p> <p>我该如何做到这一点?</p>
P粉078945182
P粉078945182

全部回复(2)
P粉212971745

为了回答初始问题并举例说明,将回调函数包装在一个立即创建包含传入数据的“快照”作用域的匿名函数中。

var ix=1;
connection.query('SELECT 1',
    (function(ix){
        return function(err, rows, fields) {
            console.log("ix="+ix);
            console.log(rows);
        };
    })(ix));

对于那些像我一样刚刚了解这个概念的人来说,最后的 })(ix)); 是外部的 var ix=1 的值,它被传递给 (function(ix){。如果你将 console.log("ix="+abc); 改为 console.log("ix="+abc);,那么它可以被重命名为 (function(abc){。

fwiw(感谢Chris提供的链接,填补了空白以得出解决方案)

P粉476046165

如果您正在使用node-mysql,请按照文档中的说明进行操作:

connection.query(
    'SELECT * FROM table WHERE id=? LIMIT ?, 5',[ user_id, start ], 
    function (err, results) {

    }
);

文档中还提供了适当转义字符串的代码,但在查询调用中使用数组会自动为您转义。

https://github.com/felixge/node-mysql

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板