MySQL과 Node.js
이제 막 Node.js에 접속하기 시작했습니다.저는 PHP 출신이기 때문에 모든 데이터베이스 요구에 MySQL을 사용하는 데 익숙합니다.
Node.js에서 MySQL을 사용하려면 어떻게 해야 합니까?
node.js 모듈 목록을 확인합니다.
- node-mysql : MySQL 프로토콜을 구현하는 node.js 모듈
- node-mysql2 : 또 하나의 순수 JS 비동기 드라이버.파이프라인, 준비된 문.
- node-mysql-libmysqlclient : libmysqlclient에 기반한 MySQL 비동기 바인딩
노드 스위칭은 간단해 보입니다.
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'example.org',
user : 'bob',
password : 'secret',
});
connection.connect(function(err) {
// connected! (unless `err` is set)
});
쿼리:
var post = {id: 1, title: 'Hello MySQL'};
var query = connection.query('INSERT INTO posts SET ?', post, function(err, result) {
// Neat!
});
console.log(query.sql); // INSERT INTO posts SET `id` = 1, `title` = 'Hello MySQL'
node-mysql은 현재 MySQL 데이터베이스 사용 시 사용되는 모듈 중 가장 우수한 모듈 중 하나이며, 유지관리 및 문서화가 잘 되어 있습니다.
오래된 스레드이므로 업데이트를 추가할 뿐입니다.
MySQL node.js 드라이버를 설치하려면:
그냥 뛰면npm install mysql
서버가 실행되고 있는 디렉토리와 같은 디렉토리에 있을 필요가 있습니다.다음 중 하나의 예시와 같이 실행하는 것이 좋습니다.
글로벌 설치의 경우:
npm install -g mysql
로컬 설치의 경우:
1 - 에 추가package.json
의존관계:
"dependencies": {
"mysql": "~2.3.2",
...
2회 실행npm install
접속을 실행하려면 mysql 서버(노드에 의존하지 않음)도 실행해야 합니다.
MySQL 서버를 설치하려면:
이것을 설명하는 튜토리얼이 많이 있습니다.또, 조작 시스템에 의해서도 조금 다릅니다.구글에 접속하여how to install mysql server [Ubuntu|MacOSX|Windows]
단, http://www.mysql.com/downloads/에 접속하여 설치해야 합니다.
여기 도움이 될 수 있는 생산 코드가 있습니다.
패키지json
{
"name": "node-mysql",
"version": "0.0.1",
"dependencies": {
"express": "^4.10.6",
"mysql": "^2.5.4"
}
}
서버 파일입니다.
var express = require("express");
var mysql = require('mysql');
var app = express();
var pool = mysql.createPool({
connectionLimit : 100, //important
host : 'localhost',
user : 'root',
password : '',
database : 'address_book',
debug : false
});
function handle_database(req,res) {
pool.getConnection(function(err,connection){
if (err) {
connection.release();
res.json({"code" : 100, "status" : "Error in connection database"});
return;
}
console.log('connected as id ' + connection.threadId);
connection.query("select * from user",function(err,rows){
connection.release();
if(!err) {
res.json(rows);
}
});
connection.on('error', function(err) {
res.json({"code" : 100, "status" : "Error in connection database"});
return;
});
});
}
app.get("/",function(req,res){-
handle_database(req,res);
});
app.listen(3000);
참고 자료 : https://codeforgeek.com/2015/01/nodejs-mysql-tutorial/
KnexJs는 두 노드 모두에서 SQL 쿼리 작성기로 사용할 수 있습니다.JS와 브라우저.사용하기 쉬워요.시험해 보자 - Knex.js
$ npm install knex --save
# Then add one of the following (adding a --save) flag:
$ npm install pg
$ npm install sqlite3
$ npm install mysql
$ npm install mysql2
$ npm install mariasql
$ npm install strong-oracle
$ npm install oracle
$ npm install mssql
var knex = require('knex')({
client: 'mysql',
connection: {
host : '127.0.0.1',
user : 'your_database_user',
password : 'your_database_password',
database : 'myapp_test'
}
});
이렇게 쓸 수 있어요.
knex.select('*').from('users')
또는
knex('users').where({
first_name: 'Test',
last_name: 'User'
}).select('id')
Imo, MySQL의 공식 Node.js 드라이버인 MySQL Connector/Node.js를 사용해 보십시오.자세한 설명은 ref-1 및 ref-2를 참조하십시오.여기서 구할 수 있는 mysqljs/mysql을 사용해 보았습니다만, 이 라이브러리의 클래스, 메서드, 속성에 관한 상세한 문서를 찾을 수 없습니다.
그래서 스탠다드로 바꿨어요MySQL Connector/Node.js
와 함께X DevAPI
이는 비동기 Promise 기반 클라이언트라이브러리이며 적절한 매뉴얼을 제공하기 때문입니다.다음의 코드 스니펫을 참조해 주세요.
const mysqlx = require('@mysql/xdevapi');
const rows = [];
mysqlx.getSession('mysqlx://localhost:33060')
.then(session => {
const table = session.getSchema('testSchema').getTable('testTable');
// The criteria is defined through the expression.
return table.update().where('name = "bar"').set('age', 50)
.execute()
.then(() => {
return table.select().orderBy('name ASC')
.execute(row => rows.push(row));
});
})
.then(() => {
console.log(rows);
});
또한 Node.js DB라고 하는 새로운 기능을 사용해 볼 수도 있습니다.이것은 여러 데이터베이스 엔진에 공통 프레임워크를 제공하는 것을 목적으로 하고 있습니다.C++로 구축되어 있기 때문에 퍼포먼스가 보증됩니다.
특히 Node.js MySQL 지원에는 db-mysql 드라이버를 사용할 수 있습니다.
라이브러리를 설치하여 mysql 데이터베이스를 연결합니다.여기에서는 안정적이고 사용하기 쉬운 노드 스위칭모듈을 선택했습니다.
npm install mysql@2.0.0-alpha2
var http = require('http'),
mysql = require('mysql');
var sqlInfo = {
host: 'localhost',
user: 'root',
password: 'urpass',
database: 'dbname'
}
client = mysql.createConnection(sqlInfo);
client.connect();
ORM, 빌더 등을 생략하고및 을 사용하여 DB/SQL 관리를 간소화할 수 있습니다.
-- create this file at: db/mdb/setup/create.database.sql
CREATE DATABASE IF NOT EXISTS sqlermysql
const conf = {
"univ": {
"db": {
"mdb": {
"host": "localhost",
"username":"admin",
"password": "mysqlpassword"
}
}
},
"db": {
"dialects": {
"mdb": "sqler-mdb"
},
"connections": [
{
"id": "mdb",
"name": "mdb",
"dir": "db/mdb",
"service": "MySQL",
"dialect": "mdb",
"pool": {},
"driverOptions": {
"connection": {
"multipleStatements": true
}
}
}
]
}
};
// create/initialize manager
const manager = new Manager(conf);
await manager.init();
// .sql file path is path to db function
const result = await manager.db.mdb.setup.create.database();
console.log('Result:', result);
// after we're done using the manager we should close it
process.on('SIGINT', async function sigintDB() {
await manager.close();
console.log('Manager has been closed');
});
언급URL : https://stackoverflow.com/questions/5818312/mysql-with-node-js
'IT' 카테고리의 다른 글
시퀀스 첨자를 붙일 때 Python에서 ::(이중 콜론)이란 무엇입니까? (0) | 2022.11.08 |
---|---|
MariaDB에서 조인된 테이블을 기반으로 행을 업데이트하려면 어떻게 해야 합니까? (0) | 2022.11.08 |
모델에 사용되는 Larabel의 원시 DB 쿼리에 매개 변수를 바인딩하려면 어떻게 해야 합니까? (0) | 2022.11.08 |
문자열에서 문자의 발생 횟수를 카운트합니다. (0) | 2022.11.08 |
JavaScript에서 CSS 클래스를 동적으로 생성하여 적용하는 방법 (0) | 2022.11.08 |