방금 Node.js를 시작했습니다. 나는 PHP 배경에서 왔으므로 모든 데이터베이스 요구에 MySQL을 사용하는 데 상당히 익숙합니다.
Node.js에서 MySQL을 어떻게 사용합니까?
multipleStatements
기능을 정말로 좋아한다 .
방금 Node.js를 시작했습니다. 나는 PHP 배경에서 왔으므로 모든 데이터베이스 요구에 MySQL을 사용하는 데 상당히 익숙합니다.
Node.js에서 MySQL을 어떻게 사용합니까?
multipleStatements
기능을 정말로 좋아한다 .
답변:
node.js 모듈 목록을 확인하십시오
node-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'
require
자바 스크립트 라이브러리를 사용하는 것보다 더 좋은 방법
node-mysql 은 아마도 MySQL 데이터베이스 작업에 사용되는 최고의 모듈 중 하나 일 것입니다.
이것은 업데이트를 추가하는 오래된 스레드이므로 다음과 같습니다.
방금 실행하는 경우 npm install mysql
서버를 실행하는 디렉토리와 동일한 디렉토리에 있어야합니다. 다음 예제 중 하나와 같이 수행하는 것이 좋습니다.
npm install -g mysql
1- package.json
의존성에 추가하십시오 :
"dependencies": {
"mysql": "~2.3.2",
...
2 회 npm install
연결이 이루어 지려면 mysql 서버 (노드 독립형)도 실행해야합니다.
이것을 설명하는 많은 튜토리얼이 있으며, 운영 체제에 따라 약간 다릅니다. Google로 이동하여을 검색하십시오 how to install mysql server [Ubuntu|MacOSX|Windows]
. 그러나 한 문장으로 : http://www.mysql.com/downloads/ 로 이동하여 설치해야합니다.
npm install --save mysql
package.json
자동으로 추가 됩니다
다음은 도움이 될 수있는 생산 코드입니다.
Package.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);
Cannot read property 'release' of undefined
KnexJ는 Node.JS와 브라우저 모두에서 SQL 쿼리 작성기로 사용할 수 있습니다. 사용하기 쉽다는 것을 알았습니다. 사용해 봅시다 -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')
이모, MySQL의 공식 Node.js 드라이버 인 MySQL Connector / Node.js를 사용해보십시오. 자세한 설명 은 ref-1 및 ref-2 를 참조하십시오. here 에서 사용할 수있는 mysqljs / mysql을 시도했지만 이 라이브러리의 클래스, 메소드, 속성에 대한 자세한 문서를 찾지 못했습니다.
따라서 비동기 Promise 기반 클라이언트 라이브러리이고 좋은 문서를 제공 하므로 표준 MySQL Connector/Node.js
으로 전환했습니다 . 다음 코드 스 니펫을 살펴보십시오.X DevAPI
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 데이터베이스를 연결하십시오. 안정적이고 사용하기 쉬운 node-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 관리를 단순화 할 수 있습니다 sqler
와 sqler-mdb
.
-- 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');
});