ฉันเพิ่งเริ่มเข้าสู่ Node.js ฉันมาจากพื้นหลัง PHP ดังนั้นฉันค่อนข้างคุ้นเคยกับการใช้ MySQL สำหรับฐานข้อมูลทั้งหมดของฉัน
ฉันจะใช้ MySQL กับ Node.js ได้อย่างไร
multipleStatements
ฟังก์ชั่น
ฉันเพิ่งเริ่มเข้าสู่ Node.js ฉันมาจากพื้นหลัง PHP ดังนั้นฉันค่อนข้างคุ้นเคยกับการใช้ MySQL สำหรับฐานข้อมูลทั้งหมดของฉัน
ฉันจะใช้ MySQL กับ Node.js ได้อย่างไร
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);
ข้อมูลอ้างอิง: https://codeforgeek.com/2015/01/nodejs-mysql-tutorial/
Cannot read property 'release' of undefined
KnexJs สามารถใช้เป็นตัวสร้างแบบสอบถาม SQL ได้ทั้ง Node.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')
คุณควรลองใช้ MySQL Connector / Node.js ซึ่งเป็นไดร์เวอร์ Node.js อย่างเป็นทางการสำหรับ MySQL ดูref-1และref-2สำหรับคำอธิบายโดยละเอียด ฉันได้ลอง mysqljs / mysql ซึ่งมีอยู่ที่นี่แต่ฉันไม่พบเอกสารรายละเอียดเกี่ยวกับชั้นเรียนวิธีการคุณสมบัติของห้องสมุดนี้
ดังนั้นฉันจึงเปลี่ยนเป็นมาตรฐานMySQL Connector/Node.js
ด้วยX DevAPI
เพราะมันเป็นไลบรารี่ของลูกค้าที่ใช้ Asynchronous-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 ++ เพื่อรับประกันประสิทธิภาพ
โดยเฉพาะคุณสามารถใช้ไดรเวอร์ DB-MySQL สำหรับการสนับสนุน Node.js 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();
คุณสามารถข้ามออม, ผู้สร้าง, ฯลฯ และลดความซับซ้อนของการจัดการฐานข้อมูล / 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');
});