집 >데이터 베이스 >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를 사용하여 쿼리를 동기화하려면 다음을 수행하세요. 노드 mysql 모듈과 함께 기본 util.promisify() 함수를 활용합니다. 예는 다음과 같습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!