Upload
luiz-fernando-duarte-jr
View
5.596
Download
3
Embed Size (px)
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!