집 >데이터 베이스 >MySQL 튜토리얼 >Async/Await 및 util.promisify()가 Node.js의 직렬 MySQL 쿼리 문제를 어떻게 해결할 수 있나요?
Node.js에서 MySQL을 사용한 비동기/대기
Node.js에서는 데이터베이스 호출과 같은 비동기 작업을 관리하기 어려울 수 있습니다. 한 가지 접근 방식은 C#에서 영감을 받은 async/await 구문을 사용하는 것입니다. 그러나 이 구문은 Node.js 초보자에게는 익숙하지 않을 수 있습니다.
동기화된 MySQL 결과를 위해 Async/Await 사용
제공된 코드는 4개의 MySQL 쿼리가 필요한 상황을 보여줍니다. 순차적으로 실행되며 그 결과는 단일 문자열에 추가됩니다. 그러나 코드가 동기식으로 실행되기 때문에 최종 문자열이 추가될 때 string1부터 string4까지의 변수는 빈 상태로 유지됩니다.
이 문제를 해결하기 위해 Node.js 버전 8에서는 다음과 같은 Promises를 사용할 수 있는 util.promisify()를 도입했습니다. MySQL과 같은 기본 Node.js 모듈. async/await 및 util.promisify()를 사용하여 원하는 동작을 달성할 수 있는 방법은 다음과 같습니다.
const mysql = require('mysql'); const util = require('util'); const conn = mysql.createConnection({ // your database connection parameters }); // promisify the query method const query = util.promisify(conn.query).bind(conn); (async () => { try { // execute the queries asynchronously const [rows1, rows2, rows3, rows4] = await Promise.all([ query('query1'), query('query2'), query('query3'), query('query4'), ]); // append the results to a single string const appendedText = rows1 + rows2 + rows3 + rows4; // do something with the appended text } catch (err) { // handle any errors } finally { // close the database connection conn.end(); } })();
이 수정된 코드는 async/await를 사용하여 쿼리를 병렬로 실행하여 결과가 동기식으로 검색되도록 합니다. 그리고 배열에 저장합니다. 그런 다음 배열을 사용하여 결과를 원하는 문자열로 연결합니다.
위 내용은 Async/Await 및 util.promisify()가 Node.js의 직렬 MySQL 쿼리 문제를 어떻게 해결할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!