Introdução à Node.js + MongoDB

  • View
    5.598

  • Download
    3

  • Category

    Software

Preview:

Citation preview

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

Node.js

MongoDB

Demo

Referências

Dúvidas

Cronograma

Node.js

Ryan Dahl

Node.js creator

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

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

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

Fo

nte

:

https://w

ww

.techem

pow

er.

com

/benchm

ark

s/#

section=

data

-r13&

hw

=ph&

test=

pla

inte

xt

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

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

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/

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/

MongoDB

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

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

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

Demo

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

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

MongoDB

Onde baixo?

http://mongodb.org

O que mais vou precisar?

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

MongoDB

Subindo servidor:

C:\nodejs\helloworld> mkdir data

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

MongoDB

Subindo o cliente:

C:\mongo\bin> mongo

Node.js

Instalando dependência do MongoDB:

C:\nodejs\helloworld> npm install -S 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!");

}

});

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});

});

});

});

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)

- }

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' });

});

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")

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("/");

});

});

Referências

Dúvidas?

Obrigado!