- Vaša košarica je trenutno prazna
Node.js: Povezava z MySQL podatkovno bazo
MySQL je sistem za upravljanje relacijskih baz podatkov (ang. Relational Database Management System – RDBMS). Ker omogoča izvajanje hitrih in kompleksnih poizvedb, velja za pomemben element orodij, ki jih pri svojem delu uporabljajo spletni razvijalci.
Na drugi strani pa imamo Node.js, odprtokodno back-end okolje za izvajanje JavaScript kode na nivoju strežnika, ki je v zadnjih letih postalo izjemno priljubljeno. Številni razvijalci se lotijo razvoja projekta prav v Node.js okolju, ob tem pa kot bazo podatkov uporabljajo MySQL.
V današnjem vodiču si bomo ogledali, kako se povezati s podatkovno bazo MySQL z uporabo Node.js aplikacije. Nato pa bomo nekaj besed namenili še postopku kreiranja MySQL tabel, seveda tudi v tem primeru z uporabo Node.js.
Kazalo
Povezava z MySQL z uporabo Node.js
Da boste lahko vzpostavili povezavo, morate imeti kreirano MySQL bazo podatkov. Če nameravate delati lokalno, si lahko pomagate z orodjem MySQL Workbench ali HeidiSQL. Na strežniku NEOSERV pa podatkovno bazo lahko kreirate v nadzorni plošči cPanel in nato do nje dostopate prek orodja phpMyAdmin.
Za delo na lokalnem okolju boste potrebovali tudi Node.js in npm. V kolikor boste delali na strežniku, pa se na svoj paket gostovanja lahko povežete s SSH (navodila).
1. Osnove: projektna mapa, package.json in modul mysql
Najprej kreirajte mapo, v kateri boste imeli shranjeno svojo Node.js aplikacijo, in se pomaknite vanjo.
mkdir projekt1
cd projekt1
V njej ustvarite datoteko package.json
, ki vključuje pomembne metapodatke projekta.
npm init -y
Zadnji del zgornjega ukaza -y
pomeni, da bo npm uporabil privzete nastavitve. Tako vam ne bo potrebno skozi postopek vpisovanja osnovnih metapodatkov za projekt.
Namestite modul mysql
, v kolikor ta za namestitev ni bil naveden v datoteki package.json
.
npm install mysql
2. Vzpostavitev povezave
Ustvarite JS datoteko aplikacije (na primer connect.js
), jo odprite in uvozite modul mysql
.
const mysql = require('mysql');
Z uporabo metode createConnection()
vzpostavite povezavo z MySQL podatkovno bazo. V spodnji kodi namesto zapisov vasadomena_uporabnik
, geslo
in vasadomena_baza
vpišite dejanske podatke svoje podatkovne baze.
const connection = mysql.createConnection({
host: 'localhost',
user: 'vasadomena_uporabnik',
password: 'geslo',
database: 'vasadomena_baza'
});
Zdaj lahko pokličete connect()
metodo na objekt connection
, da se povežete s podatkovno bazo. Omenjena metoda sprejme callback funkcijo z argumentom err
, ki poda podrobnosti o napaki, če do nje pride.
connection.connect(function(err) {
if(err){
return console.log('error: ' + err.message);
}
console.log('Povezava s podatkovno bazo MySQL je vzpostavljena.');
});
Tako, zdaj lahko zaženete aplikacijo in preverite, ali bo povezava uspešno vzpostavljena.
> node connection.js
Povezava s podatkovno bazo MySQL je vzpostavljena.
3. Prekinitev povezave
Priporočljivo je, da povezavo s podatkovno bazo po opravljeni poizvedbi prekinete. Temu je namenjena metoda end()
, klicana na objekt connection
.
connection.end(function(err) {
if (err) {
return console.log('error:' + err.message);
}
console.log('Povezava s podatkovno bazo MySQL je prekinjena.);
});
Metoda end()
poskrbi, da se preostale poizvedbe vedno izvedejo pred prekinitvijo povezave z bazo podatkov. Če se odločite za takojšnjo prekinitev povezave (brez povratnih klicev), pa uporabite metodo destroy()
.
connection.destroy();
4. Vzpostavitev bazena povezav (ang. Connection Pool)
Predpostavimo, da želite ustvariti bazen povezav z desetimi povezavami. V tem primeru uporabite spodnjo kodo.
var pool = mysql.createPool({
connectionLimit: 10,
host: 'localhost',
user: 'vasadomena_uporabnik',
password: 'geslo',
database: 'vasadomena_baza'
});
Če želite vzpostaviti povezavo iz bazena povezav, lahko uporabite metodo getConnection()
.
pool.getConnection(function(err, connection) {
// izvedba poizvedbe ...
});
Ko končate, lahko povezavo povrnete nazaj v bazen povezav, s čimer postane dostopna drugim. Preuredite zgornji ukaz in na objektu connection
uporabite metodo release()
.
pool.getConnection(function(err, connection) {
// izvedba poizvedbe ...
connnection.release();
});
Če želite prekiniti povezavo in jo odstraniti iz bazena, uporabite metodo destroy()
. Nova povezava bi bila znotraj bazena ponovno vzpostavljena, v kolikor bi se za to pojavila potreba.
Dobro je vedeti, da če ste npr. konfigurirali bazen povezav z desetimi povezavami, vendar vzporedno uporabljate le štiri, potem bazen za vas ustvari le štiri povezave. Če želite prekiniti vse povezave znotraj bazena, lahko uporabite metodo end()
in jo kličete na objekt pool
.
pool.end(function(err) {
if (err) {
return console.log(err.message);
}
// prekini vse povezave
});
Kreiranje MySQL tabele z uporabo Node.js
Zdaj pa si poglejmo še primer, kako bi z uporabo Node.js aplikacije kreirali novo tabelo v MySQL podatkovni bazi. Predpostavimo, da se vaša podatkovna baza imenuje vasadomena_baza
, zdaj pa v njej želite kreirati tabelo informatiki
.
V tem primeru se najprej povežete s podatkovno bazo, nato s stavkom CREATE TABLE
kreirate novo tabelo, zatem pa povezavo s podatkovno bazo prekinete.
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'vasadomena_uporabnik',
password: 'geslo',
database: 'vasadomena_baza'
});
connection.connect(function(err) {
if(err){
return console.log('error: ' + err.message);
}
console.log('Povezava s podatkovno bazo MySQL je vzpostavljena.');
var sql = "CREATE TABLE informatiki (ime VARCHAR(255), priimek VARCHAR(255))";
connection.query(sql, function (err, result) {
if (err) throw err;
console.log("Tabela ustvarjena.");
});
});
connection.end(function(err) {
if (err) {
return console.log('error:' + err.message);
}
console.log('Povezava s podatkovno bazo MySQL je prekinjena.');
});
Preostane vam le še to, da preverite, ali je bila tabela uspešno kreirana. To lahko preverite z orodjem phpMyAdmin (v nadzorni plošči cPanel) ali s preprostim ukazom v terminalu.
>mysql -u vasadomena_uporabnik -p vasadomena_ baza
Enter password: *********
mysql> show tables;
+-------------------+
| Tables_in_vasadomena_baza |
+-------------------+
| informatiki |
+-------------------+
1 row in set (0.06 sec)
Če ste zagledali podoben izpis zgornjemu, je bila tabela uspešno kreirana.
KOMENTARJI
Dodatna vprašanja?
KOMENTIRAJTE OBJAVO
Vaš komentar je bil uspešno oddan
Komentar bo viden na strani, ko ga naši moderatorji potrdijo.