ホームページ >データベース >mysql チュートリアル >Node.js で MySQL クエリを Async/Await と同期するにはどうすればよいですか?
Node.js での Async/Await と MySQL クエリの同期
Node.js では、async/await キーワードを使用して非同期コードで次のことを行うことができます。同期的に書き込まれます。 MySQL クエリなどのデータベース操作の場合、これは続行する前にすべての結果が確実に取得されるようにするのに特に役立ちます。
課題: 非同期クエリ
次のコードを考えてみましょう。スニペットは、複数のデータベース結果を取得して文字列に追加しようとします:
var string1 = ''; var string2 = ''; var string3 = ''; var string4 = ''; DatabasePool.getConnection(function(err, connection) { connection.query(query,function (err, result) { if (err){}; string1 = result; }); connection.query(query,function (err, result) { if (err){}; string2 = result; }); connection.query(query,function (err, result) { if (err){}; string3 = result; }); connection.query(query,function (err, result) { if (err){}; string4 = result; }); //I need to append all these strings to appended_text but //all variables remain blank because below code runs first. var appended_text = string1 + string2 + string3 + string4; });
この例ではコードでは、各クエリは非同期で実行され、appended_text 変数の未定義の動作が発生します。この問題を解決するために、Node.js 8 には強力な機能が導入されています。
解決策: Async/Await による約束
async/await を使用してクエリを同期するには、次のことができます。ネイティブの util.promisify() 関数をノードの mysql モジュールと組み合わせて利用します。次に例を示します:
const mysql = require('mysql'); const util = require('util'); const conn = mysql.createConnection({yourHOST/USER/PW/DB}); // node native promisify const query = util.promisify(conn.query).bind(conn); (async () => { try { // Execute your queries sequentially using await const rows1 = await query('select count(*) as count from file_managed'); const rows2 = await query('select count(*) as count from file_managed'); const rows3 = await query('select count(*) as count from file_managed'); const rows4 = await query('select count(*) as count from file_managed'); // Append the results to the appended_text variable var appended_text = rows1.count + rows2.count + rows3.count + rows4.count; console.log(appended_text); } finally { conn.end(); } })();
このコードでは:
ノード mysql で async/await を使用すると、データベース クエリの同期が簡素化され、コードがより読みやすく保守しやすくなります。
以上がNode.js で MySQL クエリを Async/Await と同期するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。