Tôi mới bắt đầu tham gia vào Node.js. Tôi đến từ nền tảng PHP, vì vậy tôi khá quen với việc sử dụng MySQL cho tất cả các nhu cầu cơ sở dữ liệu của mình.
Làm cách nào tôi có thể sử dụng MySQL với Node.js?
multipleStatements
chức năng này.
Tôi mới bắt đầu tham gia vào Node.js. Tôi đến từ nền tảng PHP, vì vậy tôi khá quen với việc sử dụng MySQL cho tất cả các nhu cầu cơ sở dữ liệu của mình.
Làm cách nào tôi có thể sử dụng MySQL với Node.js?
multipleStatements
chức năng này.
Câu trả lời:
Kiểm tra danh sách mô-đun node.js
nút-mysql trông đủ đơn giản:
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'example.org',
user : 'bob',
password : 'secret',
});
connection.connect(function(err) {
// connected! (unless `err` is set)
});
Truy vấn:
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
một thư viện javascript
node-mysql có lẽ là một trong những mô-đun tốt nhất hiện được sử dụng để làm việc với cơ sở dữ liệu MySQL được duy trì tích cực và được ghi chép tốt.
Vì đây là một chủ đề cũ chỉ cần thêm một bản cập nhật:
Nếu bạn chỉ chạy npm install mysql
, bạn cần ở trong cùng thư mục mà máy chủ của bạn chạy. Tôi sẽ khuyên bạn nên làm như một trong những ví dụ sau:
npm install -g mysql
1- Thêm nó package.json
vào phần phụ thuộc của bạn :
"dependencies": {
"mysql": "~2.3.2",
...
2- chạy npm install
Lưu ý rằng để các kết nối xảy ra, bạn cũng cần phải chạy máy chủ mysql (độc lập với nút)
Có một loạt các hướng dẫn ngoài kia giải thích điều này, và nó hơi phụ thuộc vào hệ thống phẫu thuật. Chỉ cần truy cập google và tìm kiếm how to install mysql server [Ubuntu|MacOSX|Windows]
. Nhưng trong một câu: bạn phải truy cập vào http://www.mysql.com/doads/ và cài đặt nó.
npm install --save mysql
sẽ cài đặt nó package.json
tự động thêm nó vào
Đây là mã sản xuất có thể giúp bạn.
Gói.json
{
"name": "node-mysql",
"version": "0.0.1",
"dependencies": {
"express": "^4.10.6",
"mysql": "^2.5.4"
}
}
Đây là tập tin máy chủ.
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);
Tham khảo: https://codeforgeek.com/2015/01/nodejs-mysql-tutorial/
Cannot read property 'release' of undefined
Imo, bạn nên thử MySQL Connector / Node.js, trình điều khiển Node.js chính thức cho MySQL. Xem ref-1 và ref-2 để được giải thích chi tiết. Tôi đã thử mysqljs / mysql có sẵn ở đây , nhưng tôi không tìm thấy tài liệu chi tiết về các lớp, phương thức, thuộc tính của thư viện này.
Vì vậy, tôi đã chuyển sang tiêu chuẩn MySQL Connector/Node.js
với X DevAPI
, vì nó là một thư viện máy khách dựa trên Promise không đồng bộ và cung cấp tài liệu tốt. Hãy xem đoạn mã sau:
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);
});
KnexJ có thể được sử dụng như một trình xây dựng truy vấn SQL trong cả Node.JS và trình duyệt. Tôi thấy nó dễ sử dụng. Hãy thử nó - 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'
}
});
Bạn có thể sử dụng nó như thế này
knex.select('*').from('users')
hoặc là
knex('users').where({
first_name: 'Test',
last_name: 'User'
}).select('id')
Bạn cũng có thể thử một nỗ lực mới hơn được gọi là Node.js DB nhằm mục đích cung cấp một khung chung cho một số công cụ cơ sở dữ liệu. Nó được xây dựng với C ++ nên hiệu suất được đảm bảo.
Cụ thể, bạn có thể sử dụng trình điều khiển db-mysql của nó để hỗ trợ Node.js MySQL .
kết nối cơ sở dữ liệu mysql bằng cách cài đặt một thư viện. ở đây, chọn mô-đun nút-mysql ổn định và dễ sử dụng.
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();
Bạn có thể bỏ qua ORM, trình xây dựng, v.v. và đơn giản hóa việc quản lý DB / SQL của bạn bằng cách sử dụng sqler
và 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');
});