首頁  >  問答  >  主體

在Node.js中,如何將參數傳遞給MySQL查詢回呼函數

<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粉078945182P粉078945182424 天前616

全部回覆(2)我來回復

  • P粉212971745

    P粉2129717452023-08-23 13:55:53

    為了回答初始問題並舉例說明,將回呼函數包裝在一個立即建立包含傳入資料的「快照」作用域的匿名函數中。

    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提供的鏈接,填補了空白以得出解決方案)

    回覆
    0
  • P粉476046165

    P粉4760461652023-08-23 11:39:22

    如果您正在使用node-mysql,請按照文件中的說明進行操作:

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

    文件中也提供了適當轉義字串的程式碼,但在查詢呼叫中使用陣列會自動為您轉義。

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

    #

    回覆
    0
  • 取消回覆