Node.js와 함께 MySQL 연결 풀 사용

亚连
풀어 주다: 2018-06-06 11:20:25
원래의
1656명이 탐색했습니다.

이 글에서는 주로 MySQL 연결 풀을 이용한 Node.js의 방법을 소개하고, 구체적인 예시를 바탕으로 mysql 연결 풀을 운영하기 위한 nodejs의 관련 모듈 설치, 연결, 쿼리 및 기타 활용 기술을 분석합니다. 이 기사에서는

Node.js가 MySQL 연결 풀을 사용하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

Nodejs와 함께 MySQL을 사용하는 방법

Nodejs를 MySQL에 연결하려면 Nodejs의 MysQL 드라이버를 사용할 수 있습니다. 예를 들어 여기서는 "node-mysql"을 사용하여 데이터베이스에 연결합니다. 다음 방법을 사용하여 데이터베이스에 연결합니다.

먼저 nodejs 패키지 관리 도구(npm)를 사용하여 mysql 드라이버를 설치해야 합니다. 명령줄은 다음과 같습니다.

npm install musql
로그인 후 복사

이제 js 파일에서 mysql을 사용하려면 파일에 다음 코드를 추가하세요.

var mysql = require('mysql');
로그인 후 복사

다음으로 이 모듈을 사용하여 MySQL 데이터베이스에 연결할 수 있습니다. 물론, 데이터베이스에 연결하려면 MySQL Server의 호스트 이름, 사용자 이름 및 비밀번호를 지정해야 합니다. 데이터베이스 시간대, 소켓 경로, 로컬 주소 등 설정할 수 있는 다른 옵션이 많이 있습니다.

var connection = mysql.createConnection({
  host : "hostName",
  user : "username",
  password: "password"
});
로그인 후 복사

그러면 아래 코드가 새로운 연결을 설정합니다.

connection.connect();
로그인 후 복사

이 연결 개체를 사용하면 아래와 같이 데이터베이스에 쿼리할 수 있습니다. SQL 삽입을 방지하려면 connection.escape() 메서드를 사용할 수 있습니다. connection.escape()方法防止sql注入。

connection.query("use database1");
 var strQuery = "select * from table1";
 connection.query( strQuery, function(err, rows){
  if(err) {
   throw err;
  }else{
   console.log( rows );
  }
});
로그인 후 복사

最后,我们可以用两种方法关闭连接。用connection.end或者connection.destroy

下面的表达式会确保所有队列中的查询在数据库连接关闭前都会被执行。请注意,这里有一个回调函数。

connection.end(function(err){
// Do something after the connection is gracefully terminated.
});
로그인 후 복사

下面的表达式会立即关闭数据库连接。并且没有回调函数或者触发任何事件。

connection.destroy( );
로그인 후 복사

Nodejs使用MysQL的连接池

使用连接池可以帮助我们更好的管理数据库连接。数据库连接池可以限制连接的最大数量,复用已有的连接等。

首先,我们需要创建一个连接池:

var mysql = require('mysql');
var pool = mysql.createPool({
 host : "hostName",
 user : "username",
 password: "password"
});
로그인 후 복사

其次,我们可以从创建的连接池中获取到一个我们需要的连接:

pool.getConnection(function(err, connection){
});
로그인 후 복사

使用回调函数的参数connection来查询数据库。最后使用connection.realease()

pool.getConnection(function(err, connection){
 connection.query( "select * from table1", function(err, rows){
  if(err) {
   throw err;
  }else{
   console.log( rows );
  }
 });
 connection.release();
});
로그인 후 복사

마지막으로 두 가지 방법으로 연결을 종료할 수 있습니다. connection.end 또는 connection.destroy를 사용하세요.

다음 표현식은 데이터베이스 연결이 닫히기 전에 대기열의 모든 쿼리가 실행되도록 보장합니다. 여기에 콜백 함수가 있다는 점에 유의하세요.

var connection = mysql.createConnection( { multipleStatements: true } );
로그인 후 복사

다음 표현식은 데이터베이스 연결을 즉시 종료합니다. 그리고 콜백 함수나 이벤트가 트리거되지 않습니다.

connection.query('select column1; select column2; select column3;', function(err, result){
 if(err){
  throw err;
 }else{
  console.log(result[0]);  // Column1 as a result
  console.log(result[1]);  // Column2 as a result
  console.log(result[2]);  // Column3 as a result
 }
});
로그인 후 복사

Nodejs는 MysQL의 연결 풀을 사용합니다

연결 풀을 사용하면 데이터베이스 연결을 더 잘 관리하는 데 도움이 될 수 있습니다. 데이터베이스 연결 풀은 최대 연결 수를 제한하고 기존 연결을 재사용하는 등의 작업을 수행할 수 있습니다.

먼저 연결 풀을 생성해야 합니다.

npm -install -g node-mysql
로그인 후 복사

두 번째로 생성된 연결 풀에서 필요한 연결을 얻을 수 있습니다.

var mysql=require("mysql");
var pool = mysql.createPool({
 host: 'localhost',
 user: 'user',
 password: 'password',
 database: 'database',
 port: port
});
var query=function(sql,callback){
 pool.getConnection(function(err,conn){
  if(err){
   callback(err,null,null);
  }else{
   conn.query(sql,function(qerr,vals,fields){
    //释放连接
    conn.release();
    //事件驱动回调
    callback(qerr,vals,fields);
   });
  }
 });
};
module.exports=query;
로그인 후 복사

콜백 함수의 연결 매개변수를 사용하여 데이터베이스를 쿼리합니다. 마지막으로 connection.realease() 메서드를 사용하여 데이터베이스 연결을 해제합니다.

var query=require("./lib/mysql.js");
query("select 1 from 1",function(err,vals,fields){
 //do something
});
로그인 후 복사

여러 쿼리문 실행

보안상의 이유로 다중 쿼리문 실행은 기본적으로 허용되지 않습니다. 다중 쿼리문 기능을 사용하려면 데이터베이스 연결 생성 시 이 기능을 켜야 합니다.

rrreee

이 기능을 활성화한 후에는 다음 예시와 같이 여러 쿼리문을 동시에 사용할 수 있습니다.

rrreee

node.js에서 mysql 연결 풀 사용

데이터를 쿼리할 때 프로그램이 멈추거나 너무 오래 기다리는 것을 원하지 않는다면 일반적으로 노드에서 연결을 연 다음 사용하는 것을 권장하지 않습니다. 모든 쿼리에 대해 이 링크를 사용하고 닫지 마세요. 왜냐하면 시도해 보고 나면 이유를 알게 될 것입니다

Node.js mysql 연결 풀 모듈

1 noderrreee

2의 mysql 모듈을 설치해 보겠습니다. mysql.js라고 부르면 내용은 다음과 같습니다.🎜rrreee🎜 3. js 클래스에서 다음을 사용하세요🎜rrreee🎜위 내용은 제가 모든 사람을 위해 정리한 내용입니다. 앞으로 모든 사람에게 도움이 되기를 바랍니다. 🎜🎜관련 기사: 🎜🎜🎜vue2.0의 dev-server.js에는 구성 방법이 없습니다🎜🎜🎜🎜Vue.set을 사용하여 Vue에서 객체 속성 메서드를 동적으로 추가🎜🎜🎜🎜vue 속성에서 동적으로 바인딩하는 방법 양식 요소🎜🎜

위 내용은 Node.js와 함께 MySQL 연결 풀 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿