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

De wikijoan
Salta a la navegació Salta a la cerca
Línia 38: Línia 38:
 
Hello Http
 
Hello Http
 
</pre>
 
</pre>
=NPM (Node Package Manager) per instal·lar mòduls=
+
=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:
 
La primera prova que vull fer és fer una connexió a una base de dades mysql. Per fer-ho utiltizaré la comanda:
 
<pre>
 
<pre>
Línia 70: Línia 70:
 
   └── sqlstring@2.2.0  
 
   └── 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'
+
</pre>
npm WARN bin No description
+
'''NOTA''': millor instal·lar la versió 2 del mòdul:
npm WARN bin No repository field.
+
<pre>
npm WARN bin No README data
+
$ npm install mysql2
npm WARN bin No license field.
 
 
</pre>
 
</pre>
 
Per fer una connexió a mysql seguim:
 
Per fer una connexió a mysql seguim:
Línia 87: Línia 86:
 
<pre>
 
<pre>
 
var http = require('http');
 
var http = require('http');
var mysql = require('mysql');
+
var mysql = require('mysql2'); //versió 2 del mòdul
  
 
// Create a connection to MySql Server and Database
 
// Create a connection to MySql Server and Database
Línia 150: Línia 149:
 
Success!
 
Success!
 
</pre>
 
</pre>
I per la consola també obtenim la llista de les paraules del vocabulari.
+
I per la consola també obtenim la llista dels municipis.
  
 
=Tutorials=
 
=Tutorials=

Revisió del 07:47, 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(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 dels municipis.

Tutorials


creat per Joan Quintana Compte, febrer 2019