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)); は (function(ix){ に渡される外側の変数 ix=1 の値です。 ("ix=" abc); は console.log("ix=" abc); に変更され、その後、(function(abc){.
) に名前変更できます。fwiw (解決策を思いつくためにギャップを埋めてくれたリンクを提供してくれた Chris に感謝します)
node-mysql を使用している場合は、ドキュメントの指示に従ってください:
リーリー文字列を適切にエスケープするためのコードもドキュメントで提供されていますが、クエリ呼び出しで配列を使用すると、文字列が自動的にエスケープされます。
https://github.com/felixge/node-mysql