SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
Introducción al desarrollo
Web con Angular 6 y NodeJs
- Backend: nodejs, express, mongoDb, loopback -
Dra. Gabriela BOSETTI gbosetti@lifia.info.unlp.edu.ar
Jornadas de Informatica UARG-UNPA
Octubre, 2018
Mongo
2
Estructura de los datos
● NoSQL
○ Los datos no requieren una estructura fija
○ Grandes volúmenes de datos
○ Rendimiento más importante que la coherencia
● Cada entrada es un documento
○ Sus propiedades pueden no ser las mismas
○ Si la propiedad no aplica, podemos no guardarla
id nombre hecha
1 Comprar
pendrives
false
2 Comprar
remeras
false
3 Imprimir
programs
true
doc1: {
id: 1,
nombre: “Comprar pendrives”,
fecha: false
}
doc2: {id: 1, nombre: “Comprar remeras”, fecha: false}
doc3: {id: 1, nombre: “Imprimir programas”, fecha: false}
3
Verificar la versión de OS: lsb_release -a
Descarga el Community Server 4.0.2
https://www.mongodb.com/download-center#community
Extraer y ejecutar “mongod”
● Ubuntu
○ ./mongod --dbpath ./data/db/
● Windows
○ "F:Program FilesMongoDBbinmongod.exe" --dbpath
"F:Program FilesMongoDBbindata"
Abrir la shell:
Instalando mongo
SGBD
4
Creando una DB y agregando docs
Listar DBs show dbs
Usar/crear use demo
Eliminar db.dropDatabase()
Agregar documento
db.items.insert( { nombre: "Demo", hecho:
"false" } );
Agregar desde Json
(no desde la shell)
mongoimport --db dbName --collection
collectionName --file fileName.json
--jsonArray
Ej. mongoimport --db demo --collection users --file
/home/gabi/dev/mongodb-ubuntu/bin/data.json --jsonArray
5
Creando una DB
Recuperar doc/s db.items.find({nombre:"Demo item"})
Contar elementos db.items.find().count()
Actualizar
documento
db.items.update(
{_id: new ObjectId("5b9958b7b658ab54d70f148e")},
{$set: {nombre: "Nuevo nombre" }}
)
Eliminar
documento
db.items.deleteOne({_id: new
ObjectId("5b9958b7b658ab54d70f148e")})
Docs https://docs.mongodb.com/manual/tutorial/query-documents/
6
Operadores de queries
Más operadores https://docs.mongodb.com/manual/reference/operator/query/
Regex cheatsheet https://www.cheatography.com//davechild/cheat-sheets/regular-expressions/pdf/
● $all Permite obtener más de una instancia que coincida
● $gt Greather Than = mayor que
● $lt Lower Than = menor que
● $or realiza una operación OR lógica con expresiones
● $and realiza una operación AND lógica con expresiones
● $regex evalúa la coincidencia de patrones en cadenas
7
Hands on!
● Crear una nueva BD, con una colección de documentos llamada “films”.
● Agregar las siguientes películas:
Quo vaddo?
- anio: 2016
- : Italia
- director: Nunziante
- actores:
● Checco Zalone
Black Swan
- anio: 2010
- actores:
● Natalie Portman
● Mila Kunis
● Vincent Cassel
Bienvenue chez les Ch'tis
- anio: 2008
- pais: Francia
- director: Boon
La vita è bella
- anio: 1997
- pais: Italia
- director: Benigni
- actores:
● Roberto Benigni
● Nicoletta Braschi
Léon: The Professional
- anio: 1994
- pais: Francia
- director: Besson
- actores:
● Natalie Portman
Nueve reinas
- anio: 1997
- pais: Argentina
- actores:
● Ricardo Darín
● Leticia Brédice
● Gastón Pauls
8
Hands on!
1. Recuperá todos los documentos
2. Recuperá el número total de documentos en la colección
3. Recuperá todos los documentos
a. cuyo director sea Boon
b. cuyo país de producción es Francia
c. que incluyan a Natalie Portman en la lista de actores
principales
d. que incluyan “nue” o “Nue” en el título (not case-sensitive)
e. con películas estrenadas después del 2000
f. con películas estrenadas después del 2000
g. con películas de 1997 y 2008
h. con películas de los 90
9
node 10.9.x & mongo 3.x
10
Nuevo proyecto
➔ Crear un nuevo proyecto
npm init
➔ Instalar dependencias necesarias
npm install
◆ express framework para la creación de una api
◆ mongodb * controlador para usar mongodb
◆ body-parser * Parsea el body de solicitudes entrantes
◆ cors * Cross-Origin Resource Sharing
(*) middleware: bloque de código que se ejecuta tras un request, antes que la
petición llega a ser procesada por el route handler.
➔ Crear server.js
11
¿Qué vamos a soportar?
12
Un posible esqueleto
var express = require('express');
var app = express();
var cors = require('cors');
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(cors());
app.get( '/items', (req, res) => {});
app.post( '/items', (req, res, next) => {});
app.delete('/items/:id', (req, res, next) => {});
app.put( '/items/:id', (req, res, next) => {});
app.listen(3000);
Paths de la API E.g. http://localhost:3000/items
13
Conectándonos a la BD
MongoClient.connect( "mongodb://localhost:27017/items",
function(err, client) {
if(err) throw err;
db = client.db('items');
app.listen(3000);
console.log("Listening on port 3000n");
});
14
Hands on!
Recuperando documentos
app.get("/items", function(req, res) {
db.collection("items").find().toArray((error, results) => {
if (error) throw error;
res.send(results);
});
});
https://github.com/gbosetti/todo-list-mongo-backend/blob/master/server.js
pp.post('/items',(req, res) => {});
app.delete('/items/:id', (req, res) => {});
app.put('/items/:id', (req, res, next) => {});
15
Usando la API con curl
curl -X GET http://localhost:3000/items
curl -X POST -H "Content-Type: application/json" -d '{"name":
"demo"}' http://localhost:3000/items
16
Loopback 3.x
17
Instalando loopback-cli
sudo npm install -g loopback-cli@3
Sobre loopback
● Un framework de aplicaciones Node basado en Express
● loopback-cli es una herramienta que facilita la creación de este tipo de aplicaciones
● Vamos a usar la versión 3
Docs: https://loopback.io/doc/en/lb3/
18
Usando loopback-cli
● Crear el esqueleto mínimo
lb
● Crear una nueva clase del modelo
lb model
19
Usando loopback-cli
Docs: https://loopback.io/doc/en/lb3/
● Iniciar el servidor
node .
20
Creando un usuario por defecto
1. Configura las fuentes de datos
2. Define los modelos
3. Configura los modelos y les asocia las fuentes de datos
4. Configura la aplicación
5. Ejecuta scripts de arranque en el directorio /server/boot
var User = app.models.User;
User.create(
[{ username: 'admin',
email: 'admin@blah.com',
password: 'nimda'
}],
function(err, users) {
if (err) throw err;
}
);
Definiendo scripts de arrannque https://loopback.io/doc/en/lb3/Defining-boot-scripts.html
lb boot-script
21
Usando loopback-cli
● Borrar una clase del modelo
/common/models/your-model.js
/common/models/your-model.json
/server/model-config.json.
22
Autenticación
23
Habilitando la autenticación
lb acl
24
Accediendo
1. Crear un usuario
2. Iniciar sesión (/Users/login) con la credencial: {
"username": "...",
"password": "..."
}
Token
de
acceso
25
Relaciones entre
clases del modelo
26
hasMany
Ciudad
id: Number
nombre: String
Barrio
id: Number
nombre: String
idCiudad: Number
*
barrios
Dada una ciudad,
queremos listar
sus barrios
27
belongsTo
Ciudad
id: Number
nombre: String
Barrio
id: Number
nombre: String
idCiudad: Numberciudad
Dado un barrio,
queremos recuperar
su Ciudad
28
¿Y si queremos vincular a User?
CustomUser
age: String
...
User
Gestionando usuarios: https://loopback.io/doc/en/lb3/Managing-users.html
...
Item*
29
MongoDB
30
Conectores
db.createUser( { user: "admin", pwd: "nimda", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
31
MongoDB
● Crear un nuevo datasource y usar un conector
lb datasource
● Vincular las clases del modelo a la nueva DB
/server/model-config.json
32
MongoDB
{
"db": {
"host": "mongodb://127.0.0.1",
"port": 27017,
"url": "mongodb://127.0.0.1:27017/dbname",
"database": "sitedb",
"password": "nimda",
"name": "db",
"user": "admin",
"connector": "mongodb"
}
}
33
Introducción al desarrollo
Web con Angular 6 y NodeJs
- Backend: nodejs, express, mongoDb, loopback -
Dra. Gabriela BOSETTI gbosetti@lifia.info.unlp.edu.ar
Jornadas de Informatica UARG-UNPA
Octubre, 2018
34

Más contenido relacionado

Similar a Introducción al desarrollo Web: Backend

Buildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en PythonBuildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en PythonCodeSyntax
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Restorando
 
Despliegue de aplicaciones PHP
Despliegue de aplicaciones PHPDespliegue de aplicaciones PHP
Despliegue de aplicaciones PHPAlicantePHP
 
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...Ricardo Guerrero Gómez-Olmedo
 
Humanizacion de java script con typescript para d365
Humanizacion de java script con typescript para d365Humanizacion de java script con typescript para d365
Humanizacion de java script con typescript para d365Demian Raschkovan
 
APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y GoJM Robles
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apisCloudAppi
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APICloudAppi
 
Nerdear.la 2018 | Journey to Stability - Cómo reducimos costos y aumentamos l...
Nerdear.la 2018 | Journey to Stability - Cómo reducimos costos y aumentamos l...Nerdear.la 2018 | Journey to Stability - Cómo reducimos costos y aumentamos l...
Nerdear.la 2018 | Journey to Stability - Cómo reducimos costos y aumentamos l...Gustavo Arjones
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidAlberto Ruibal
 
Frontend Tools | Herramientas para Frontends
Frontend Tools | Herramientas para FrontendsFrontend Tools | Herramientas para Frontends
Frontend Tools | Herramientas para FrontendsDavid Ballén
 
Cómo instalar un Servidor GIS utilizando el Framework GeoDjango (Django+Post...
Cómo instalar un Servidor GIS utilizando el Framework GeoDjango (Django+Post...Cómo instalar un Servidor GIS utilizando el Framework GeoDjango (Django+Post...
Cómo instalar un Servidor GIS utilizando el Framework GeoDjango (Django+Post...Guillermo Pizarro
 
Encender una cafetera con Micropython, MQTT y Android
Encender una cafetera con Micropython, MQTT y AndroidEncender una cafetera con Micropython, MQTT y Android
Encender una cafetera con Micropython, MQTT y AndroidGDGFoz
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandboxTensor
 
Manejo de información raster_en_post_gis-2.0-
Manejo de información raster_en_post_gis-2.0-Manejo de información raster_en_post_gis-2.0-
Manejo de información raster_en_post_gis-2.0-Kudos S.A.S
 
Mallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDBMallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDBEmilio Torrens
 
Cloud para tu juego en una tarde
Cloud para tu juego en una tardeCloud para tu juego en una tarde
Cloud para tu juego en una tardeIgnacio Segura
 

Similar a Introducción al desarrollo Web: Backend (20)

Buildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en PythonBuildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en Python
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
 
Despliegue de aplicaciones PHP
Despliegue de aplicaciones PHPDespliegue de aplicaciones PHP
Despliegue de aplicaciones PHP
 
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
 
Humanizacion de java script con typescript para d365
Humanizacion de java script con typescript para d365Humanizacion de java script con typescript para d365
Humanizacion de java script con typescript para d365
 
APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y Go
 
Tutorial C++
Tutorial C++Tutorial C++
Tutorial C++
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera API
 
Nerdear.la 2018 | Journey to Stability - Cómo reducimos costos y aumentamos l...
Nerdear.la 2018 | Journey to Stability - Cómo reducimos costos y aumentamos l...Nerdear.la 2018 | Journey to Stability - Cómo reducimos costos y aumentamos l...
Nerdear.la 2018 | Journey to Stability - Cómo reducimos costos y aumentamos l...
 
MobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a AndroidMobileCONGalicia Introducción a Android
MobileCONGalicia Introducción a Android
 
Frontend Tools | Herramientas para Frontends
Frontend Tools | Herramientas para FrontendsFrontend Tools | Herramientas para Frontends
Frontend Tools | Herramientas para Frontends
 
Cómo instalar un Servidor GIS utilizando el Framework GeoDjango (Django+Post...
Cómo instalar un Servidor GIS utilizando el Framework GeoDjango (Django+Post...Cómo instalar un Servidor GIS utilizando el Framework GeoDjango (Django+Post...
Cómo instalar un Servidor GIS utilizando el Framework GeoDjango (Django+Post...
 
Composer
ComposerComposer
Composer
 
Encender una cafetera con Micropython, MQTT y Android
Encender una cafetera con Micropython, MQTT y AndroidEncender una cafetera con Micropython, MQTT y Android
Encender una cafetera con Micropython, MQTT y Android
 
PDIDTI-S7.pptx
PDIDTI-S7.pptxPDIDTI-S7.pptx
PDIDTI-S7.pptx
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
 
Manejo de información raster_en_post_gis-2.0-
Manejo de información raster_en_post_gis-2.0-Manejo de información raster_en_post_gis-2.0-
Manejo de información raster_en_post_gis-2.0-
 
Mallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDBMallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDB
 
Cloud para tu juego en una tarde
Cloud para tu juego en una tardeCloud para tu juego en una tarde
Cloud para tu juego en una tarde
 

Más de Gabriela Bosetti

Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Gabriela Bosetti
 
Desarrollo de webextensions
Desarrollo de webextensionsDesarrollo de webextensions
Desarrollo de webextensionsGabriela Bosetti
 
Flexible distribution of existing Web interfaces: an architecture involving d...
Flexible distribution of existing Web interfaces: an architecture involving d...Flexible distribution of existing Web interfaces: an architecture involving d...
Flexible distribution of existing Web interfaces: an architecture involving d...Gabriela Bosetti
 
Poster: Supporting Mobile Web Augmentation by End Users
Poster: Supporting Mobile Web Augmentation by End UsersPoster: Supporting Mobile Web Augmentation by End Users
Poster: Supporting Mobile Web Augmentation by End UsersGabriela Bosetti
 
An End User Development approach for Mobile Web Augmentation applications
An End User Development approach for Mobile Web Augmentation applicationsAn End User Development approach for Mobile Web Augmentation applications
An End User Development approach for Mobile Web Augmentation applicationsGabriela Bosetti
 
Towards full end-users control of social recommendations
Towards full end-users control of social recommendationsTowards full end-users control of social recommendations
Towards full end-users control of social recommendationsGabriela Bosetti
 
Abstracting and Structuring Web contents for supporting Personal Web Experie...
Abstracting and Structuring Web contents for supporting  Personal Web Experie...Abstracting and Structuring Web contents for supporting  Personal Web Experie...
Abstracting and Structuring Web contents for supporting Personal Web Experie...Gabriela Bosetti
 
From Search Engines to Augmented Search Services
From Search Engines to Augmented Search ServicesFrom Search Engines to Augmented Search Services
From Search Engines to Augmented Search ServicesGabriela Bosetti
 

Más de Gabriela Bosetti (8)

Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6
 
Desarrollo de webextensions
Desarrollo de webextensionsDesarrollo de webextensions
Desarrollo de webextensions
 
Flexible distribution of existing Web interfaces: an architecture involving d...
Flexible distribution of existing Web interfaces: an architecture involving d...Flexible distribution of existing Web interfaces: an architecture involving d...
Flexible distribution of existing Web interfaces: an architecture involving d...
 
Poster: Supporting Mobile Web Augmentation by End Users
Poster: Supporting Mobile Web Augmentation by End UsersPoster: Supporting Mobile Web Augmentation by End Users
Poster: Supporting Mobile Web Augmentation by End Users
 
An End User Development approach for Mobile Web Augmentation applications
An End User Development approach for Mobile Web Augmentation applicationsAn End User Development approach for Mobile Web Augmentation applications
An End User Development approach for Mobile Web Augmentation applications
 
Towards full end-users control of social recommendations
Towards full end-users control of social recommendationsTowards full end-users control of social recommendations
Towards full end-users control of social recommendations
 
Abstracting and Structuring Web contents for supporting Personal Web Experie...
Abstracting and Structuring Web contents for supporting  Personal Web Experie...Abstracting and Structuring Web contents for supporting  Personal Web Experie...
Abstracting and Structuring Web contents for supporting Personal Web Experie...
 
From Search Engines to Augmented Search Services
From Search Engines to Augmented Search ServicesFrom Search Engines to Augmented Search Services
From Search Engines to Augmented Search Services
 

Último

c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxMartín Ramírez
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfvictorbeltuce
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfManuel Molina
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxMartín Ramírez
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas123yudy
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressionsConsueloSantana3
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfCESARMALAGA4
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 

Último (20)

c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressions
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 

Introducción al desarrollo Web: Backend

  • 1. Introducción al desarrollo Web con Angular 6 y NodeJs - Backend: nodejs, express, mongoDb, loopback - Dra. Gabriela BOSETTI gbosetti@lifia.info.unlp.edu.ar Jornadas de Informatica UARG-UNPA Octubre, 2018
  • 3. Estructura de los datos ● NoSQL ○ Los datos no requieren una estructura fija ○ Grandes volúmenes de datos ○ Rendimiento más importante que la coherencia ● Cada entrada es un documento ○ Sus propiedades pueden no ser las mismas ○ Si la propiedad no aplica, podemos no guardarla id nombre hecha 1 Comprar pendrives false 2 Comprar remeras false 3 Imprimir programs true doc1: { id: 1, nombre: “Comprar pendrives”, fecha: false } doc2: {id: 1, nombre: “Comprar remeras”, fecha: false} doc3: {id: 1, nombre: “Imprimir programas”, fecha: false} 3
  • 4. Verificar la versión de OS: lsb_release -a Descarga el Community Server 4.0.2 https://www.mongodb.com/download-center#community Extraer y ejecutar “mongod” ● Ubuntu ○ ./mongod --dbpath ./data/db/ ● Windows ○ "F:Program FilesMongoDBbinmongod.exe" --dbpath "F:Program FilesMongoDBbindata" Abrir la shell: Instalando mongo SGBD 4
  • 5. Creando una DB y agregando docs Listar DBs show dbs Usar/crear use demo Eliminar db.dropDatabase() Agregar documento db.items.insert( { nombre: "Demo", hecho: "false" } ); Agregar desde Json (no desde la shell) mongoimport --db dbName --collection collectionName --file fileName.json --jsonArray Ej. mongoimport --db demo --collection users --file /home/gabi/dev/mongodb-ubuntu/bin/data.json --jsonArray 5
  • 6. Creando una DB Recuperar doc/s db.items.find({nombre:"Demo item"}) Contar elementos db.items.find().count() Actualizar documento db.items.update( {_id: new ObjectId("5b9958b7b658ab54d70f148e")}, {$set: {nombre: "Nuevo nombre" }} ) Eliminar documento db.items.deleteOne({_id: new ObjectId("5b9958b7b658ab54d70f148e")}) Docs https://docs.mongodb.com/manual/tutorial/query-documents/ 6
  • 7. Operadores de queries Más operadores https://docs.mongodb.com/manual/reference/operator/query/ Regex cheatsheet https://www.cheatography.com//davechild/cheat-sheets/regular-expressions/pdf/ ● $all Permite obtener más de una instancia que coincida ● $gt Greather Than = mayor que ● $lt Lower Than = menor que ● $or realiza una operación OR lógica con expresiones ● $and realiza una operación AND lógica con expresiones ● $regex evalúa la coincidencia de patrones en cadenas 7
  • 8. Hands on! ● Crear una nueva BD, con una colección de documentos llamada “films”. ● Agregar las siguientes películas: Quo vaddo? - anio: 2016 - : Italia - director: Nunziante - actores: ● Checco Zalone Black Swan - anio: 2010 - actores: ● Natalie Portman ● Mila Kunis ● Vincent Cassel Bienvenue chez les Ch'tis - anio: 2008 - pais: Francia - director: Boon La vita è bella - anio: 1997 - pais: Italia - director: Benigni - actores: ● Roberto Benigni ● Nicoletta Braschi Léon: The Professional - anio: 1994 - pais: Francia - director: Besson - actores: ● Natalie Portman Nueve reinas - anio: 1997 - pais: Argentina - actores: ● Ricardo Darín ● Leticia Brédice ● Gastón Pauls 8
  • 9. Hands on! 1. Recuperá todos los documentos 2. Recuperá el número total de documentos en la colección 3. Recuperá todos los documentos a. cuyo director sea Boon b. cuyo país de producción es Francia c. que incluyan a Natalie Portman en la lista de actores principales d. que incluyan “nue” o “Nue” en el título (not case-sensitive) e. con películas estrenadas después del 2000 f. con películas estrenadas después del 2000 g. con películas de 1997 y 2008 h. con películas de los 90 9
  • 10. node 10.9.x & mongo 3.x 10
  • 11. Nuevo proyecto ➔ Crear un nuevo proyecto npm init ➔ Instalar dependencias necesarias npm install ◆ express framework para la creación de una api ◆ mongodb * controlador para usar mongodb ◆ body-parser * Parsea el body de solicitudes entrantes ◆ cors * Cross-Origin Resource Sharing (*) middleware: bloque de código que se ejecuta tras un request, antes que la petición llega a ser procesada por el route handler. ➔ Crear server.js 11
  • 12. ¿Qué vamos a soportar? 12
  • 13. Un posible esqueleto var express = require('express'); var app = express(); var cors = require('cors'); var bodyParser = require('body-parser'); app.use(bodyParser.json()); app.use(cors()); app.get( '/items', (req, res) => {}); app.post( '/items', (req, res, next) => {}); app.delete('/items/:id', (req, res, next) => {}); app.put( '/items/:id', (req, res, next) => {}); app.listen(3000); Paths de la API E.g. http://localhost:3000/items 13
  • 14. Conectándonos a la BD MongoClient.connect( "mongodb://localhost:27017/items", function(err, client) { if(err) throw err; db = client.db('items'); app.listen(3000); console.log("Listening on port 3000n"); }); 14
  • 15. Hands on! Recuperando documentos app.get("/items", function(req, res) { db.collection("items").find().toArray((error, results) => { if (error) throw error; res.send(results); }); }); https://github.com/gbosetti/todo-list-mongo-backend/blob/master/server.js pp.post('/items',(req, res) => {}); app.delete('/items/:id', (req, res) => {}); app.put('/items/:id', (req, res, next) => {}); 15
  • 16. Usando la API con curl curl -X GET http://localhost:3000/items curl -X POST -H "Content-Type: application/json" -d '{"name": "demo"}' http://localhost:3000/items 16
  • 18. Instalando loopback-cli sudo npm install -g loopback-cli@3 Sobre loopback ● Un framework de aplicaciones Node basado en Express ● loopback-cli es una herramienta que facilita la creación de este tipo de aplicaciones ● Vamos a usar la versión 3 Docs: https://loopback.io/doc/en/lb3/ 18
  • 19. Usando loopback-cli ● Crear el esqueleto mínimo lb ● Crear una nueva clase del modelo lb model 19
  • 21. Creando un usuario por defecto 1. Configura las fuentes de datos 2. Define los modelos 3. Configura los modelos y les asocia las fuentes de datos 4. Configura la aplicación 5. Ejecuta scripts de arranque en el directorio /server/boot var User = app.models.User; User.create( [{ username: 'admin', email: 'admin@blah.com', password: 'nimda' }], function(err, users) { if (err) throw err; } ); Definiendo scripts de arrannque https://loopback.io/doc/en/lb3/Defining-boot-scripts.html lb boot-script 21
  • 22. Usando loopback-cli ● Borrar una clase del modelo /common/models/your-model.js /common/models/your-model.json /server/model-config.json. 22
  • 25. Accediendo 1. Crear un usuario 2. Iniciar sesión (/Users/login) con la credencial: { "username": "...", "password": "..." } Token de acceso 25
  • 27. hasMany Ciudad id: Number nombre: String Barrio id: Number nombre: String idCiudad: Number * barrios Dada una ciudad, queremos listar sus barrios 27
  • 28. belongsTo Ciudad id: Number nombre: String Barrio id: Number nombre: String idCiudad: Numberciudad Dado un barrio, queremos recuperar su Ciudad 28
  • 29. ¿Y si queremos vincular a User? CustomUser age: String ... User Gestionando usuarios: https://loopback.io/doc/en/lb3/Managing-users.html ... Item* 29
  • 31. Conectores db.createUser( { user: "admin", pwd: "nimda", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } ) 31
  • 32. MongoDB ● Crear un nuevo datasource y usar un conector lb datasource ● Vincular las clases del modelo a la nueva DB /server/model-config.json 32
  • 33. MongoDB { "db": { "host": "mongodb://127.0.0.1", "port": 27017, "url": "mongodb://127.0.0.1:27017/dbname", "database": "sitedb", "password": "nimda", "name": "db", "user": "admin", "connector": "mongodb" } } 33
  • 34. Introducción al desarrollo Web con Angular 6 y NodeJs - Backend: nodejs, express, mongoDb, loopback - Dra. Gabriela BOSETTI gbosetti@lifia.info.unlp.edu.ar Jornadas de Informatica UARG-UNPA Octubre, 2018 34