在Node.js中,如何將參數傳遞給MySQL查詢回呼函數
P粉078945182
2023-08-22 15:44:32
<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>
為了回答初始問題並舉例說明,將回呼函數包裝在一個立即建立包含傳入資料的「快照」作用域的匿名函數中。
對於那些剛剛像我一樣了解這個概念的人來說,最後的})(ix)); 是外部的var ix=1 的值,它被傳遞給(function(ix){。如果你將console.log("ix=" abc); 改為console.log("ix=" abc);,那麼它可以被重新命名為(function(abc){。
fwiw(感謝Chris提供的鏈接,填補了空白以得出解決方案)
如果您正在使用node-mysql,請按照文件中的說明進行操作:
文件中也提供了適當轉義字串的程式碼,但在查詢呼叫中使用陣列會自動為您轉義。
https://github.com/felixge/node-mysql
#