>데이터 베이스 >MySQL 튜토리얼 >Async/Await 및 util.promisify()가 Node.js의 직렬 MySQL 쿼리 문제를 어떻게 해결할 수 있나요?

Async/Await 및 util.promisify()가 Node.js의 직렬 MySQL 쿼리 문제를 어떻게 해결할 수 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-03 08:22:14558검색

How Can Async/Await and util.promisify() Solve Serial MySQL Query Issues in Node.js?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.