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

De wikijoan
Salta a la navegació Salta a la cerca
 
(Hi ha una revisió intermèdia del mateix usuari que no es mostren)
Línia 113: Línia 113:
 
             // Shows the result on console window
 
             // Shows the result on console window
 
             //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].municipi);
+
        console.log(rows[i].municipi);
res.write(rows[i].municipi + '\n');
+
        res.write(rows[i].municipi + '\n');
};
+
    };
    //res.write(rows[1]);
+
    res.write('\n');
    res.write('\n');
 
 
             res.end("Success!");
 
             res.end("Success!");
 
         }
 
         }
 
 
     });
 
     });
 
 
// The server will be listen on port 8080  
 
// The server will be listen on port 8080  
 
}).listen(8080);
 
}).listen(8080);

Revisió de 07:50, 22 feb 2022

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.

Descàrrega i instal.lació de Node.js

NodeJS inclous npm, el gestor de paquets de node. Hauríem de tenir les versions el més actualitzades possible.

$ node --version
v16.1.0

$ npm --version
7.13.0

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

NPM (Node Package Manager) per instal·lar el mòdul de mysql

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.

$ 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
...


Instal·lem el mòdul de mysql (per tal de què NodeJS sàpiga accedir a bases de dades 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 

NOTA: millor instal·lar la versió 2 del mòdul:

$ npm install mysql2

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('mysql2'); //versió 2 del mòdul

// 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('\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 dels municipis.

Tutorials



creat per Joan Quintana Compte, febrer 2022