Saya baru saja mulai masuk ke Node.js. Saya berasal dari latar belakang PHP, jadi saya cukup terbiasa menggunakan MySQL untuk semua kebutuhan basis data saya.
Bagaimana saya bisa menggunakan MySQL dengan Node.js?
multipleStatements
fungsinya.
Saya baru saja mulai masuk ke Node.js. Saya berasal dari latar belakang PHP, jadi saya cukup terbiasa menggunakan MySQL untuk semua kebutuhan basis data saya.
Bagaimana saya bisa menggunakan MySQL dengan Node.js?
multipleStatements
fungsinya.
Jawaban:
Periksa daftar modul node.js
node-mysql terlihat cukup sederhana:
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'example.org',
user : 'bob',
password : 'secret',
});
connection.connect(function(err) {
// connected! (unless `err` is set)
});
Pertanyaan:
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
perpustakaan javascript
node-mysql mungkin salah satu modul terbaik di luar sana yang digunakan untuk bekerja dengan database MySQL yang secara aktif dipelihara dan didokumentasikan dengan baik.
Karena ini adalah utas lama yang hanya menambahkan pembaruan:
Jika Anda menjalankan hanya npm install mysql
, Anda harus berada di direktori yang sama dengan yang Anda jalankan server Anda. Saya akan menyarankan untuk melakukannya seperti dalam salah satu contoh berikut:
npm install -g mysql
1- Tambahkan ke package.json
dalam dependensi Anda:
"dependencies": {
"mysql": "~2.3.2",
...
2- lari npm install
Perhatikan bahwa agar koneksi terjadi, Anda juga harus menjalankan server mysql (yang merupakan simpul independen)
Ada banyak tutorial di luar sana yang menjelaskan hal ini, dan itu sedikit tergantung pada sistem operasi. Cukup buka google dan cari how to install mysql server [Ubuntu|MacOSX|Windows]
. Tetapi dalam sebuah kalimat: Anda harus pergi ke http://www.mysql.com/downloads/ dan menginstalnya.
npm install --save mysql
akan menginstalnya dan menambahkannya ke perangkat Anda package.json
secara otomatis
Berikut adalah kode produksi yang dapat membantu Anda.
Package.json
{
"name": "node-mysql",
"version": "0.0.1",
"dependencies": {
"express": "^4.10.6",
"mysql": "^2.5.4"
}
}
Ini adalah file Server.
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);
Referensi: https://codeforgeek.com/2015/01/nodejs-mysql-tutorial/
Cannot read property 'release' of undefined
Imo, Anda harus mencoba MySQL Connector / Node.js yang merupakan driver Node.js resmi untuk MySQL. Lihat ref-1 dan ref-2 untuk penjelasan terperinci. Saya telah mencoba mysqljs / mysql yang tersedia di sini , tetapi saya tidak menemukan dokumentasi terperinci tentang kelas, metode, properti perpustakaan ini.
Jadi saya beralih ke standar MySQL Connector/Node.js
dengan X DevAPI
, karena itu adalah berbasis Janji asynchronous klien perpustakaan dan menyediakan dokumentasi yang baik. Lihatlah potongan kode berikut:
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);
});
KnexJs dapat digunakan sebagai pembangun kueri SQL di Node.JS dan browser. Saya merasa mudah digunakan. Mari kita coba - 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'
}
});
Anda bisa menggunakannya seperti ini
knex.select('*').from('users')
atau
knex('users').where({
first_name: 'Test',
last_name: 'User'
}).select('id')
Anda juga dapat mencoba upaya yang lebih baru yang dikenal sebagai Node.js DB yang bertujuan untuk menyediakan kerangka kerja umum untuk beberapa mesin basis data. Itu dibangun dengan C ++ sehingga kinerja dijamin.
Khususnya Anda bisa menggunakan driver db-mysql untuk dukungan Node.js MySQL .
sambungkan database mysql dengan menginstal perpustakaan. di sini, pilih modul node-mysql yang stabil dan mudah digunakan.
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();
Anda dapat melewati ORM, pembangun, dll. Dan menyederhanakan manajemen DB / SQL Anda menggunakan sqler
dan 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');
});