Diferència entre revisions de la pàgina «Introducció a Node.js»

De wikijoan
Salta a la navegació Salta a la cerca
Línia 103: Línia 103:
 
*http://blog.josedacruz.com/2013/07/19/learning-node-js-using-mysql/#.UqCxGhwur08
 
*http://blog.josedacruz.com/2013/07/19/learning-node-js-using-mysql/#.UqCxGhwur08
  
Hauràs de tenir a mà una base de dades de mysql, una taula a la que vols accedir. Per exemple, es pot accedir a la base de dades langtrainer hostatjada en la màquina 192.168.0.15:
+
Hauràs de tenir a mà una base de dades de mysql, una taula a la que vols accedir. Per exemple, es pot accedir a la base de dades ''municipis'' hostatjada en la màquina localhost:
 
<pre>
 
<pre>
$ mysql -h 192.168.0.15 -u alumne -pkeiL2lai langtrainer
+
$ mysql -h localhost -u alumne -pkeiL2lai municipis
 
</pre>
 
</pre>
  
Línia 139: Línia 139:
 
             //console.log(rows[0]);
 
             //console.log(rows[0]);
 
for (var i = 0; i < rows.length; i++) {
 
for (var i = 0; i < rows.length; i++) {
  console.log(rows[i].word);
+
  console.log(rows[i].municipi);
 
res.write(rows[i].municipi + '\n');
 
res.write(rows[i].municipi + '\n');
 
};
 
};
Línia 154: Línia 154:
 
Executem el script:
 
Executem el script:
 
<pre>
 
<pre>
$ node acces_langtrainer.js
+
$ node acces_municipis.js
 
</pre>
 
</pre>
 
i des d'un navegador web accedim a la url:
 
i des d'un navegador web accedim a la url:
Línia 161: Línia 161:
 
Connect to mySql
 
Connect to mySql
  
deserve (to)
+
Albanchez de Mágina
weird
+
Alcalá la Real
gills
+
Alcaudete
draw breath (to)
+
Aldeaquemada
draw (to)
+
Andújar
snout
+
Arjona
wound
+
Arjonilla
dismiss (to)
+
Arquillos
shame
+
Arroyo del Ojanco
hump
+
...
lump
 
spit
 
  
 
Success!
 
Success!

Revisió del 17:57, 11 març 2021

Què és i per a què serveix Node.js

Node és un intèrpret Javascript del cantó del servidor que canvia la noció de com hauria de treballar un servidor. El seu objectiu és permetre a un programador construir aplicacions altamente escalables i escriure codi que pugui gestionar desenes de milers de connexions simultànies en una sola màquina física.

Instal.lació de Node.js

Per a la instal.lació seguim:

Descarreguem el codi font. Ara bé, ens fixarem de descarregar la última versió disponible que obtenim de:

En aquest cas descarreguem la versió 0.12.18 (abril 2017):

$ wget http://nodejs.org/dist/v0.12.18/node-v0.12.18-linux-x64.tar.gz 
$ tar xvzf node-v0.12.18-linux-x64.tar.gz 
$ cd node-v0.12.18-linux-x64/bin
$ ./node

Si la instal.lació ha anat bé ja puc fer la primera prova: Hola món!:

$ ./node
> console.log('Hello World');
Hello World

O bé si edito el fitxer hello_world.js:

console.log('Hello World');
Hello World

El podré invocar fent:

$ ./node hello_world.js
Hello World

hello world http server

Crearem un petit servidor web que escolti peticions http pel port 8080. Script hello_http.js:

var http = require('http');

var server = http.createServer(function(req, res) {
  res.writeHead(200);
  res.end('Hello Http');
});
server.listen(8080);

Arrenquem el servidor:

$ node hello_http.js

I en un navegador web ens comuniquem amb el servidor:

O bé podem comunicar-nos amb el servidor web a través de la línia de comandes, utilitzant la utilitat curl:

$ curl localhost:8080
Hello Http

Instal.lació del NPM: Node Package Manager

La primera prova que vull fer és fer una connexió a una base de dades mysql. Per fer-ho utiltizaré la comanda:

var mysql = require('mysql');

però prèviament s'haurà d'instal.lar el módul mysql, i això es fa amb el Node Package Manager, que prèviament s'ha d'instal.lar. Amb Linux/Ubuntu és tan fàcil com fer:

$ sudo apt-get install npm

Per assegurar-nos de què el tenim ben instal.lat:

$ npm help

Usage: npm <command>

where <command> is one of:
    add-user, adduser, apihelp, author, bin, bugs, c, cache,
    completion, config, ddp, dedupe, deprecate, docs, edit,
    explore, faq, find, find-dupes
...

Accedir a mysql

Ara que ja tenim instal.lat el npm podem instal.lar el mòdul de mysql:

$ npm install mysql
/home/joan/node-v0.12.18-linux-x64/bin
└─┬ mysql@2.13.0 
  ├── bignumber.js@3.1.2 
  ├─┬ readable-stream@1.1.14 
  │ ├── core-util-is@1.0.2 
  │ ├── inherits@2.0.3 
  │ ├── isarray@0.0.1 
  │ └── string_decoder@0.10.31 
  └── sqlstring@2.2.0 

npm WARN enoent ENOENT: no such file or directory, open '/home/joan/node-v0.12.18-linux-x64/bin/package.json'
npm WARN bin No description
npm WARN bin No repository field.
npm WARN bin No README data
npm WARN bin No license field.

Per fer una connexió a mysql seguim:

Hauràs de tenir a mà una base de dades de mysql, una taula a la que vols accedir. Per exemple, es pot accedir a la base de dades municipis hostatjada en la màquina localhost:

$ mysql -h localhost -u alumne -pkeiL2lai municipis

Script acces_municipis.js:

var http = require('http');
var mysql = require('mysql');

// Create a connection to MySql Server and Database
var connection = mysql.createConnection({
  host : 'localhost',
  port : 3306,
  database: 'municipis',
  user : 'alumne',
  password : 'keiL2lai'
});

// Create a simple Web Server to respond to requests
http.createServer(function(req, res){
    // RECEIVED A REQUEST!
    // for this example respond with a HTTP 200 OK
    res.writeHeader(200);
    res.write('Connect to mySql\n');

      // Query the database to some data (municipis de Jaén)
    connection.query("select * from municipis m, provincies p where m.id_prov=p.id_prov  and provincia='Jaén'", function(err, rows){

        // There was a error or not?
        if(err != null) {
            res.end("Query error:" + err);
        } else {
            // Shows the result on console window
            //console.log(rows[0]);
				for (var i = 0; i < rows.length; i++) {
				  console.log(rows[i].municipi);
					res.write(rows[i].municipi + '\n');
				};
		    	//res.write(rows[1]);
		    	res.write('\n');
            res.end("Success!");
        }

    });

// The server will be listen on port 8080 
}).listen(8080);

Executem el script:

$ node acces_municipis.js

i des d'un navegador web accedim a la url:

Connect to mySql

Albanchez de Mágina
Alcalá la Real
Alcaudete
Aldeaquemada
Andújar
Arjona
Arjonilla
Arquillos
Arroyo del Ojanco
...

Success!

I per la consola també obtenim la llista de les paraules del vocabulari.

Tutorials


creat per Joan Quintana Compte, febrer 2019