Professional Documents
Culture Documents
01 Projecte JS4 NoSQL MongoDB+Mongoose-2023-2024
01 Projecte JS4 NoSQL MongoDB+Mongoose-2023-2024
1/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
INTRODUCCIÓ
Ara que tenim l’aplicació gairebé muntada és el moment de passar d’una Base de dades
relacional com és SQLite a una de tipus NoSQL com és Mongo DB.
La BD es pot hostejar en local (https://www.mongodb.com/docs/manual/installation/) o
online (https://www.mongodb.com/). En aquesta pràctica farem servir la opció local.
ENUNCIAT
S’ha de:
1. Instal·lar MongoDB en local
2. Crear una BD o s’han d’afegir a mà les dades inicials i on aniran les futures dades
que els usuaris afegeixin
3. Accedir a la vostra aplicació fent servir mongoose
INSTAL·LACIÓ DE MONGODB
Haureu de seguir les passes del Moodle per :
1. instal·lar MongoDB en local
2. (opcional) instal·lar compass que és un client GUI de MongoDB , ja sigui online o
local
https://www.mongodb.com/docs/manual/installation/
3. engegar el dimoni de MongoDB amb sysctl:
2/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
MONGOOSE i MODELS
Un ORM (object relational mapper) és un model de programació per accedir a una base
de dades. Mongoose és un ORM per accedir a BBDD de tipus NoSQL com és MongoDB
En comptes de fer servir SQL, un ORM accedeix mitjançant objectes de forma que cada
taula de la BD està representada per un model. Aquest model és una classe del ORM
L’accés a al BD es fa mitjançant els models, generalment amb la sintaxi Model.funció() per
exemple si tenim els models Group (que representa la taula groups) i Album (que
representa la taula albums)
const filter = {name:’acdc’)
const groups = Group.find( filter ) // retorna els grups amb name=’acdc’
const album = Album.findOneAndUpdate( filter, options )
3/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
4/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
Identificadors: _id
Atenció que els camps de tipus id canvien respecte al clàssic. Ara es diuen _id i no són
de tipus integer sinó ObjectId. Al igual que amb moltes BBDD és el SGBD (sistema
gestor de base de dades), en aquest cas MongoDB, qui els gestiona. No els hem de crear.
Si tenim un foreign key cal definir-ho del tipus
Naming convention
5/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
6/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
7/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
8/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
9/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
Més tutorials:
https://www.w3schools.com/Js/js_arrow_function.asp
10/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
var fs = require('fs');
const fsPromises = require('fs').promises;
fs.promises.readFile("input.txt") // retorna un Promise
.then(function (data) {
console.log("" + data);
})
.catch(function (error) {
console.log(error);
})
11/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
data = {'groups':data}
res.json(data);
}).catch(function (error) {
console.log(error)
});
});
12/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
13/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
14/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
POSSIBLES ERRORS
Cal parar atenció al dimoni de MongoDB. Si no està engegat cal engegar-lo
15/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
SOLUCIÓ
Comprovar l’estat del dimoni i si no està engegat engegar-lo
EXPORTACIÓ DE LA BD
De vegades cal exportar la BD per fer una migració. (En mongo online es fa igual)
16/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
posar nom
17/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
AVALUACIÓ
La nostra aplicació està dirigida a essers humans i per tant es valora MOLT la presentació
Suspès nota màxima 4:
• 1 única taula
• 2 taules no lligades (dues taules sense control de foreign keys)
• S’accedeix amb un altre ORM que no sigui mongoose en local
• No es fa servir mongoose + models
• No s’entrega l’exportació de les col·leccions (de les taules)
Nota màxima 5
• formulari de contacte
• info de autor/a
• api doc
Nota màxima 6
• Per el control de les foreign key no hi ha un select i l’usuari ha de posar ids
• no es fan servir arrow functions
18/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
Nota màxima 7
• Sí es fan servir arrow functions
• Hi ha un select per introduir les foreign keys
• No es mostra el id del foreing key sinó una dada.
Exemple:
Dades a MongoDB
Group (_id,name)
{_id:1F3GAS, name: metallica}
Album (_id,title,group_id)
{_id:8SHD45,title:black, group_id: 1F3GAS}
La vostra web
Album list
_id Title Group
8SHD45 black Metallica OK
8SHD45 black 1F3GAS NO
• No es fa servir async-await
Nota màxima 8
• Si es fa servir async-await
Modificadors
• update a totes les taules +1p
• Datatables funcionant correctament a cada taula +0.5p
• API doc amb swagger (https://swagger.io/) +0.5p
• Notificacions d’alertes tipus estàs segur al modificar i esborrar (cal tenir fet Update)
+0.5 opcions:
◦ notistack: https://notistack.com/features/basic
◦ notiflix: https://notiflix.github.io/
19/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
◦ noty: https://ned.im/noty/#/
S’entrega la carpeta node_modules: - 1p (NO cal entregar-la, esborreu-la abans )
20/21
CFGS DAM - DEPARTAMENT DE
M4: LLENGUATGES DE MARQUES INFORMÀTICA
CURS 2023 / 2024
Projecte JS4 NoSQL – MongoDB + Mongoose
ENTREGA
• Carpeta principal lestevesinicials
◦ carpeta BD amb el resultat d’exportar totes les col·leccions
▪ albums.json
▪ groups.json
◦ carpeta projecte: el projecte sencer de webstorm comprimit com a NOSQL-
lestevesincials.
• Si el format NO és tar gzip, si no es pot descomprimir o si està buit es baixarà la
nota (MB→ B, B→ CO, CO→ INS, INS→ DEF). És responsabilitat vostra una
vegada apujada l’entrega baixar-la i veure si es pot descomprimir i no està buida
• Us recordo que el fet que un arxiu es digui .tgz o .tar.gz no vol dir que aquest sigui
el seu format El que es farà abans de corregir serà fer servir el comandament file:
21/21