bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


accedint_mongodb

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
accedint_mongodb [2020/02/12 17:52]
enric_mieza_sanchez [Codi d'exmeple NodeJS i MongoDB]
accedint_mongodb [2022/01/26 18:46] (actual)
enrique_mieza_sanchez [Accedint a MongoDB]
Línia 5: Línia 5:
 Aquest article està orientat a la connexió a MongoDB a través de diferents llenguatges de programació. Aquest article està orientat a la connexió a MongoDB a través de diferents llenguatges de programació.
  
-Es recomana utilitzar una versió més avançada de MongoDB que la que hi ha als respositoris d'Ubuntu 16.04 (porta versions 2.x). Si la versió de MongoDB és 2.x o menor, algunes eines com Robomongo o Studio 3T no ens funcionaran bé. A Ubuntu 18.04 hi ha MongoDB > 3.x, cap problema, doncs.+Es recomana utilitzar una versió avançada de MongoDB. Si la versió de MongoDB és 2.x o menor, algunes eines com Robomongo o Studio 3T no ens funcionaran bé. A Ubuntu 18.04 hi ha MongoDB > 3.x, cap problema, doncs (però a Ubuntu 16.04 tenien versions 2.x i no eren viables).
  
 Recursos: Recursos:
Línia 12: Línia 12:
   * https://robomongo.org facilita la gestió i fer proves, tot i que la //shell// de MongoDB és força còmoda ja que utilitza JavaScript com a llenguatge nadiu.   * https://robomongo.org facilita la gestió i fer proves, tot i que la //shell// de MongoDB és força còmoda ja que utilitza JavaScript com a llenguatge nadiu.
   * [[https://www.mongodb.com/cloud/atlas|Mongo Atlas]] és un servei de BD Mongo al núvol que ens permet un cluster gratuït.   * [[https://www.mongodb.com/cloud/atlas|Mongo Atlas]] és un servei de BD Mongo al núvol que ens permet un cluster gratuït.
 +
 +{{mdb-vs-sql.png?direct}}
  
 Importa amb ''mongorestore'' la base de dades de prova {{movies-mongo-dump.rar}}. La utilitat d'importació habitual és ''mongoimport'', però en aquest cas farem servir ''mongorestore'' ja que les dades estan en format binari). Importa amb ''mongorestore'' la base de dades de prova {{movies-mongo-dump.rar}}. La utilitat d'importació habitual és ''mongoimport'', però en aquest cas farem servir ''mongorestore'' ja que les dades estan en format binari).
  
 +{{tag> #FpInfor #Dam #DamMp06 #DamMp06Uf3 #DamMp06Uf03 #Daw #DawMp07 #DawMp07Uf3 #DawMp07Uf03 nodejs mongodb mongo node nosql bbdd }}
 +
 +\\
  
 ===== MongoDB i PHP ===== ===== MongoDB i PHP =====
Línia 69: Línia 74:
  
  
 +
 +
 +\\
  
 ===== MongoDB amb NodeJS ===== ===== MongoDB amb NodeJS =====
Línia 164: Línia 172:
  
 Visita la web amb el browser a (cal abans crear les plantilles ejs descrites més avall) Visita la web amb el browser a (cal abans crear les plantilles ejs descrites més avall)
-  http:localhost:3000+  http://localhost:3000
      
 Prova la API amb la comanda: Prova la API amb la comanda:
Línia 178: Línia 186:
  
  
 +==== ObjectID ====
 +De vegades voldrem accedir a diferents elements de la llibreria de MongoDB per a NodeJS. Per exemple, [[https://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html|per generar ObjectIDs fes un cop d'ull a aquest codi]].
 +
 +\\
 +
 +
 +===== Connectant amb MongoDB Atlas =====
 +Obriu-vos un compte a [[https://www.mongodb.com/cloud/atlas|MongoDB Atlas]] que us permetrà crear un //cluster// MongoDB gratuït al núvol. Importeu les col·leccions d'exemple per poder fer proves.
 +
 +Si busqueu com connectar al vostre //cluster//, us mostrarà un string del tipus:
 +  mongodb+srv://pepe:[email protected]/mydb
 +
 +... que significa que em puc connectar a l'usuari "pepe" amb password "pepe123" i accedir a la BD "mydb".
 +
 +Modifiqueu el codi de l'aplicació perquè us connecti a la vostra instància Atlas. Penseu que no podeu crear un codi que contingui usuaris i contrasenyes i pujar-ho al sistema de control de versions (GitHub), ja que l'exposaríeu a altres usuaris i us hackejarien la base de dades fàcilment. Així, una bona pràctica de control de versions és posar el usuari i //password// del nostre cluster a les variables d'entorn, i al codi capturar-ho amb ''process.env.MYVAR'':
 +
 +Abans d'engegar l'aplicació haureu de ajustar les variables d'entorn amb
 +  $ export DBUSER=admin
 +  $ export DBPASS=P@ssw0rd
 +  $ node app.js
 +
 +<sxh javascript>
 +// connexió a mongo i start app
 +var mongo = require('mongodb').MongoClient;
 +var mongoClient;
 +// consts
 +const PORT = process.env.PORT || 5000
 +const user = encodeURIComponent( process.env.DBUSER );
 +const pass = encodeURIComponent( process.env.DBPASS );
 +var dbConStr = "mongodb+srv://"+user+":"+pass+"@cluster0-metgf.mongodb.net/grades";
 +mongo.connect( dbConStr, function( err, _client ) {
 +    // si no ens podem connectar, sortim
 +    if( err ) throw err;
 +    mongoClient = _client;
 +    // si no hi ha cap error de connexió, engeguem el servidor
 +    app.listen(PORT, function () {
 +        console.log('Example app listening on http://localhost:'+PORT+' !');
 +    });
 +});
 +</sxh>
 +
 +==== Contrasenyes segures ====
 +Aquest codi anterior captura les variables DBUSER i DBPASS de l'entorn de la //shell//, la qual cosa va bé, però resulta una mica incòmode ajustar les variables cada cop que engeguem la màquina. Per estalviar-nos aquest pas, podem posar les variable a l'arxiu ''.env'', però **afegint ''.env'' al ''.gitignore'' per evitar que pugem aquest arxiu amb contasenyes al repositori de codi**.
 +
 +Utilitza el [[https://www.npmjs.com/package/dotenv|paquet dotenv de npm]] per carregar les variables d'entorn de l'arxiu ''.env''. Tindrem un arxiu '.env' com ara:
 +  DBUSER=user
 +  DBPASS=P@ssw0rd
 +
 +I podem carregar-lo tal i com diu la documentació, amb:
 +<sxh javascript>
 +require('dotenv').config()
 +</sxh>
 +
 +\\
  
 ===== Exercici DB films ===== ===== Exercici DB films =====
  
 +<WRAP todo>
 Importa amb ''mongorestore'' la base de dades de prova {{movies-mongo-dump.rar}}. Importa amb ''mongorestore'' la base de dades de prova {{movies-mongo-dump.rar}}.
- 
  
 Crea una web amb la base de dades de films que implementi: Crea una web amb la base de dades de films que implementi:
Línia 195: Línia 257:
   - Filtrar que només es pugui valorar un cop amb el ID del cookie de sessió (quan canvia de IDsession es pot tornar a votar).   - Filtrar que només es pugui valorar un cop amb el ID del cookie de sessió (quan canvia de IDsession es pot tornar a votar).
  
 +</WRAP>
 +
 +\\
  
accedint_mongodb.1581529944.txt.gz · Darrera modificació: 2020/02/12 17:52 per enric_mieza_sanchez