Az önce Node.js'ye girmeye başladım. Ben bir PHP arka plan geliyor, bu yüzden oldukça benim tüm veritabanı ihtiyaçları için MySQL kullanmaya alışkınım.
MySQL'i Node.js ile nasıl kullanabilirim?
multipleStatements
işlevi gerçekten seviyorum .
Az önce Node.js'ye girmeye başladım. Ben bir PHP arka plan geliyor, bu yüzden oldukça benim tüm veritabanı ihtiyaçları için MySQL kullanmaya alışkınım.
MySQL'i Node.js ile nasıl kullanabilirim?
multipleStatements
işlevi gerçekten seviyorum .
Yanıtlar:
Node.js modül listesine göz atın
node-mysql yeterince basit görünüyor:
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'example.org',
user : 'bob',
password : 'secret',
});
connection.connect(function(err) {
// connected! (unless `err` is set)
});
Sorguları:
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
Bir javascript kütüphanesi ing'den daha iyi ne olabilir
node-mysql muhtemelen aktif olarak korunan ve iyi belgelenmiş MySQL veritabanı ile çalışmak için kullanılan en iyi modüllerden biridir.
Bu eski bir iş parçacığı olduğu için bir güncelleme ekliyoruz:
Sadece npm install mysql
çalışırsanız, sunucunuzu çalıştırdığınız dizinde olmanız gerekir. Aşağıdaki örneklerden birindeki gibi yapmanızı tavsiye ederim:
npm install -g mysql
1- package.json
Bağımlılıklarınıza ekleyin :
"dependencies": {
"mysql": "~2.3.2",
...
2- koş npm install
Bağlantıların gerçekleşmesi için ayrıca (düğümden bağımsız olan) mysql sunucusunu çalıştırmanız gerekeceğini unutmayın.
Orada bunu açıklayan bir sürü öğretici var ve bu biraz operatif sisteme bağlı. Google'a gidin ve arayın how to install mysql server [Ubuntu|MacOSX|Windows]
. Ancak bir cümle ile: http://www.mysql.com/downloads/ adresine gitmeli ve yüklemelisiniz.
npm install --save mysql
package.json
otomatik olarak ekleyecek
İşte size yardımcı olabilecek üretim kodu.
Package.json
{
"name": "node-mysql",
"version": "0.0.1",
"dependencies": {
"express": "^4.10.6",
"mysql": "^2.5.4"
}
}
İşte Sunucu dosyası.
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);
Referans: https://codeforgeek.com/2015/01/nodejs-mysql-tutorial/
Cannot read property 'release' of undefined
KnexJ'ler hem Node.JS'de hem de tarayıcıda bir SQL sorgu oluşturucu olarak kullanılabilir. Kullanımı kolay buluyorum. Deneyin - 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'
}
});
Bu şekilde kullanabilirsiniz
knex.select('*').from('users')
veya
knex('users').where({
first_name: 'Test',
last_name: 'User'
}).select('id')
Imo, MySQL için resmi Node.js sürücüsü olan MySQL Connector / Node.js'yi denemelisiniz. Bkz ref-1 ve ref-2 ayrıntılı bir açıklama için. Burada bulunan mysqljs / mysql denedim , ama bu kütüphanenin sınıfları, yöntemleri, özellikleri hakkında ayrıntılı belgeler bulamıyorum.
Bu yüzden standardına geçiş MySQL Connector/Node.js
ile X DevAPI
bir olduğu için, asenkron Promise tabanlı istemci kitaplığı ve iyi belgeler sağlar. Aşağıdaki kod snippet'ine bir göz atın:
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);
});
Ayrıca , çeşitli veritabanı motorları için ortak bir çerçeve sağlamayı amaçlayan Node.js DB olarak bilinen daha yeni bir çabayı da deneyebilirsiniz . C ++ ile üretilmiştir, böylece performans garanti edilir.
Özellikle Node.js MySQL desteği için db-mysql sürücüsünü kullanabilirsiniz .
mysql veritabanını bir kütüphane kurarak bağlayın. burada, kararlı ve kullanımı kolay düğüm-mysql modülünü aldı.
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();
Sen vb ORM, inşaatçılar, atlayıp kullanarak DB / SQL yönetimini kolaylaştırabilirsiniz sqler
ve 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');
});