Promise を使用して Node.js で MySQL 戻り値を処理する
この非同期プログラミング パラダイムでは、MySQL 戻り値を処理するには、これまでとは異なるアプローチが必要です。 Python のような言語に。この記事では、Promise を使用して MySQL の結果を効果的に処理するコードを再構築する方法に焦点を当てています。
次の例を考えてみましょう:
<code class="javascript">function getLastRecord(name) { var connection = getMySQL_connection(); var query_str = "SELECT name, " + "FROM records " + "WHERE (name = ?) " + "LIMIT 1 "; var query_var = [name]; connection.query(query_str, query_var, function (err, rows, fields) { //if (err) throw err; if (err) { //throw err; console.log(err); logger.info(err); } else { //console.log(rows); return rows; } }); //var query = connection.query(query_str, function (err, rows, fields) { } var rows = getLastRecord('name_record'); console.log(rows);</code>
このコードは、Node.js の非同期の性質により困難になります。この問題に対処するために、Promise ベースのソリューションを採用できます:
<code class="javascript">function getLastRecord(name) { return new Promise(function (resolve, reject) { // The Promise constructor should catch any errors thrown on // this tick. Alternately, try/catch and reject(err) on catch. var connection = getMySQL_connection(); var query_str = "SELECT name, " + "FROM records " + "WHERE (name = ?) " + "LIMIT 1 "; var query_var = [name]; connection.query(query_str, query_var, function (err, rows, fields) { // Call reject on error states, // call resolve with results if (err) { return reject(err); } resolve(rows); }); }); }</code>
今度は、then/catch ブロックを使用して戻り値を処理できます:
<code class="javascript">getLastRecord('name_record').then(function (rows) { // now you have your rows, you can see if there are <20 of them }).catch((err) => setImmediate(() => { throw err; })); // Throw async to escape the promise chain</code>
Promise を採用することで読みやすさを維持しながら、非同期機能を利用して、Node.js で MySQL の戻り値をより効率的に処理できます。
以上がPromise を使用して Node.js で MySQL の戻り値を効率的に処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。