在Node.js中,如何將參數傳遞給MySQL查詢回呼函數
P粉078945182
P粉078945182 2023-08-22 15:44:32
0
2
707
<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

#
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板