SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

actividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoactividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoJosDanielEstradaHern
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularMooPandrea
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIIsauraImbrondone
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática5    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática5    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Alejandrino Halire Ccahuana
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 

Kürzlich hochgeladen (20)

actividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoactividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° grado
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circular
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática5    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática5    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
 

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