65
Introdução à Node.js + MongoDB

Introdução à Node.js + MongoDB

Embed Size (px)

Citation preview

Page 1: Introdução à Node.js + MongoDB

Introdução à Node.js + MongoDB

Page 2: Introdução à Node.js + MongoDB

Ciência da Computação

Computação Móvel

Suporte, dev, analista, gerente...

11 anos trabalhando com TI

- 10 anos com Java e C#

- 2 anos com MongoDB

- alguns meses com Node.js

Page 3: Introdução à Node.js + MongoDB
Page 4: Introdução à Node.js + MongoDB
Page 5: Introdução à Node.js + MongoDB

Node.js

MongoDB

Demo

Referências

Dúvidas

Cronograma

Page 6: Introdução à Node.js + MongoDB

Node.js

Page 7: Introdução à Node.js + MongoDB
Page 8: Introdução à Node.js + MongoDB

Ryan Dahl

Node.js creator

Page 9: Introdução à Node.js + MongoDB

Fonte: https://github.com/libuv/libuv e https://developers.google.com/v8/

Page 10: Introdução à Node.js + MongoDB

Fonte: https://github.com/libuv/libuv e https://developers.google.com/v8/

Page 11: Introdução à Node.js + MongoDB

Fonte: http://www.dotnetcurry.com/nodejs/1143/nodejs-tutorial-series-beginner-experienced-developer

Page 12: Introdução à Node.js + MongoDB
Page 13: Introdução à Node.js + MongoDB

Fo

nte

:

https://w

ww

.techem

pow

er.

com

/benchm

ark

s/#

section=

data

-r13&

hw

=ph&

test=

pla

inte

xt

Page 14: Introdução à Node.js + MongoDB

Fonte: https://insights.stackoverflow.com/survey/2017#technology

Page 15: Introdução à Node.js + MongoDB
Page 16: Introdução à Node.js + MongoDB

Fonte: http://www.luiztools.com.br/post/por-que-aprender-nodejs/

Page 17: Introdução à Node.js + MongoDB

Node.js

"...Node.js uses an event-driven, non-blocking I/O model..."

"...Node is designed to build scalable network applications..."

Cenários de Usos:

- APIs e serviços;

- bots e automação;

- mensageria;

- aplicações real-time e colaboração;

- backend de games;

- IoT;

Fonte: https://nodejs.org/en/about/

Page 18: Introdução à Node.js + MongoDB

Node.js

"...Node.js uses an event-driven, non-blocking I/O model..."

"...Node is designed to build scalable network applications..."

Tecnologias Concorrentes:

Fonte: https://nodejs.org/en/about/

Page 19: Introdução à Node.js + MongoDB
Page 20: Introdução à Node.js + MongoDB

MongoDB

Page 21: Introdução à Node.js + MongoDB
Page 22: Introdução à Node.js + MongoDB

Fonte: https://github.com/libuv/libuv e https://developers.google.com/v8/

Page 23: Introdução à Node.js + MongoDB
Page 24: Introdução à Node.js + MongoDB
Page 25: Introdução à Node.js + MongoDB
Page 26: Introdução à Node.js + MongoDB
Page 27: Introdução à Node.js + MongoDB
Page 28: Introdução à Node.js + MongoDB
Page 29: Introdução à Node.js + MongoDB
Page 30: Introdução à Node.js + MongoDB
Page 31: Introdução à Node.js + MongoDB
Page 32: Introdução à Node.js + MongoDB
Page 33: Introdução à Node.js + MongoDB
Page 34: Introdução à Node.js + MongoDB

Fonte: https://insights.stackoverflow.com/survey/2017#technology

Page 35: Introdução à Node.js + MongoDB
Page 36: Introdução à Node.js + MongoDB

MongoDB

Cenários de Usos:

- Big Data

- escrita intensa

- busca simples, porém pesada

- alta escala e disponibilidade

- schema instável

Tecnologias Concorrentes:

RethinkDB, RavenDB, Couchbase e CouchDB

Page 37: Introdução à Node.js + MongoDB

Demo

Page 38: Introdução à Node.js + MongoDB

Node.js

Onde baixo?

http://nodejs.org

Como verifico se está funcionando?

node

node -v

npm

O que mais vou precisar?

Visual Studio Code: https://code.visualstudio.com/download

Page 39: Introdução à Node.js + MongoDB
Page 40: Introdução à Node.js + MongoDB

Node.js

Criando um projeto Express:

C:\nodejs> express helloworld

Executando um projeto Express:

C:\nodejs\helloworld> npm start

Acessando um projeto Express:

http://localhost:3000

Page 41: Introdução à Node.js + MongoDB
Page 42: Introdução à Node.js + MongoDB

MongoDB

Onde baixo?

http://mongodb.org

O que mais vou precisar?

GUI Mongo: http://studio3t.com (opcional)

Page 43: Introdução à Node.js + MongoDB
Page 44: Introdução à Node.js + MongoDB

MongoDB

Subindo servidor:

C:\nodejs\helloworld> mkdir data

C:\mongo\bin> mongod --dbpath C:\nodejs\helloworld\data

Page 45: Introdução à Node.js + MongoDB
Page 46: Introdução à Node.js + MongoDB

MongoDB

Subindo o cliente:

C:\mongo\bin> mongo

Page 47: Introdução à Node.js + MongoDB
Page 48: Introdução à Node.js + MongoDB

Node.js

Instalando dependência do MongoDB:

C:\nodejs\helloworld> npm install -S mongodb

Page 49: Introdução à Node.js + MongoDB

Node.js

Configurando a rota:

C:\nodejs\helloworld\routes> nano index.js

Configurando a conexão:

var MongoClient = require('mongodb').MongoClient;

MongoClient.connect("mongodb://localhost:27017/db",

function(err, db) {

if(!err) {

console.log("Conectou!");

}

});

Page 50: Introdução à Node.js + MongoDB
Page 51: Introdução à Node.js + MongoDB

Node.js

Reconfigurando a rota /:

router.get('/', function(req, res, next) {

var MongoClient = require('mongodb').MongoClient;

MongoClient.connect("mongodb://localhost:27017/exampleDb",

function(err, db) {

if(err) { return console.log(err); }

db.collection("customers").find().toArray(function(e, docs){

if(e){ return console.log(e); }

res.render('index', {title: 'connected', docs: docs});

});

});

});

Page 52: Introdução à Node.js + MongoDB

Node.js

Reconfigurando a views/index.jade:

extends layout

block content

h1= title

p Welcome to #{title}

ul

- for(var i=0; i < docs.length; i++){

li #{docs[i].nome} (#{docs[i].idade} anos)

- }

Page 53: Introdução à Node.js + MongoDB
Page 54: Introdução à Node.js + MongoDB

Node.js

Configurando a rota /new:

C:\nodejs\helloworld\routes> nano index.js

/* GET new page. */

router.get('/new', function(req, res, next) {

res.render('new', { title: 'Novo cadastro' });

});

Page 55: Introdução à Node.js + MongoDB

Node.js

Criando a views/new.jade:

extends layout

block content

h1= title

form(action="/save", method="POST")

label= "Nome:"

input(type="text", name="nome")

br

label= "Idade:"

input(type="number", name="idade")

br

input(type="submit", value="Salvar")

Page 56: Introdução à Node.js + MongoDB
Page 57: Introdução à Node.js + MongoDB

Node.js

Configurando a rota /save:

C:\nodejs\helloworld\routes> nano index.js

router.post('/save', function(req, res, next) {

var MongoClient = require('mongodb').MongoClient;

MongoClient.connect("mongodb://localhost:27017/exampleDb",

function(err, db) {

if(err) { console.log(err); }

var nome = req.body.nome, idade = req.body.idade;

db.collection("customers").insert({nome: nome, idade: idade});

res.redirect("/");

});

});

Page 58: Introdução à Node.js + MongoDB
Page 59: Introdução à Node.js + MongoDB
Page 60: Introdução à Node.js + MongoDB

Referências

Page 61: Introdução à Node.js + MongoDB
Page 62: Introdução à Node.js + MongoDB
Page 63: Introdução à Node.js + MongoDB
Page 64: Introdução à Node.js + MongoDB

Dúvidas?

Page 65: Introdução à Node.js + MongoDB

Obrigado!