Вы находитесь на странице: 1из 18

Introduo aoConjunto MEAN

MEAN Stack
MongoDB
Express
AngularJS
NodeJS

Verso 06/03/2016

Prof. Antonio Sergio Bernardo

1
Indice

Parte Nome Pgina

1 Ferramentas Bsicas
HTML, CSS, JavaScript 3
Editor Atom e Packages 3

2 Conjunto MEAN
InstalandoMongoDB 4
Instalando Node.js 5
Trabalhando com Node.js 6
Introduo ao NPM 7
Introduo ao Express 8-9
Trabalhando com MongoDB 10-13
Introduo ao Mongoose 14-16
Introduo ao Sequelize 17

3 Bibliografia 18

2
Ferramentas Bsicas

HTML, CSS and JavaScript All in One


Pages: 608
Julie Meloni, SAMS Publishing, 2011
http://it-ebooks.info/book/4546/

HTML-CSS-JavaScript-Code(Cdigo do Livro Acima)


Outros: Ver bibliografia e rea Pblica (LES-2016-1S)

Editor Atom
Instalao
Arquivo 14 AtomSetup - Executar como Administrador
Localizao do Atom:
C:\Users\nome\AppData\Local\atom\app-1.3.2\atom.exe
Criar um atalho

Com o Atom ativado


Package browser-plus
a) Selecionar Packages/Settings View/Install Packages
b) Informar browser-plus e clicar Packages
c) Em browser-plus, clicar Install e esperar

Com o browser-plus instalado:


a) Abrir um arquivo HTML
b) Posicionar o cursor no arquivo
c) Botodireito, open browser-plus

Package Emmet
a) SelecionarPackages/Settings View/Install Packages
b) Informar emmet e clicar Packages
c) Em Emmet, clicar Install e esperar

Utilizao do Emmet: Ver 14Emmet-Syntax (LES-2016-1S)

Outros Packages:atom-beautify, autocomplete-plus, etc.

3
Conjunto MEAN

InstalandoMongoDB

Instalao: Obter arquivo .msi em:


https://www.mongodb.org/downloads#production

Selecionar a opo adequada, para 32 ou 64 bits.


Dar duplo-clickno arquivo .msi escolhido (baixado):
Windows 32
mongodb-win32-i386-3.0.8-signed
Windows 64
mongodb-win32-x86_64-3.2.3-signed
Executar at o fim,aceitando o LicenseAgreement,clicando em Setup Type
Custompara poder escolher a pasta de instalao, por exemplo:
C:\MongoDB.
Clicar Install, e prosseguir at o final do Setup.
Acrescentar em PATH (Variveis do Sistema):
C:\MongoDB\bin
Criar em C:\MongoDB\bin as subpastas: \data\db e\log
Em MongoDB\bin criar o arquivo mongod.cfg
com o seguinte conteudo:
systemLog:
destination: file
path: c:\mongodb\bin\log\mongod.log
storage:
dbPath: c:\mongodb\bin\data\db

Abrir cmd prompt como admin (Iniciar, cmd, ctrl-shift-enter)


e executar:
cd \mongodb\bin
mongod --config C:\mongodb\bin\mongod.cfg --install
Instala MongoDB como Servio
net start MongoDB

Commandos para o MongoDB Service:


net start MongoDB
net stop MongoDB
sc.exe deleteMongoDB
mongod.exe --repair
mongod.exe

4
Conjunto MEAN

InstalandoNode.js

Obter arquivo .msi em: https://nodejs.org/en/download/


Selecionar a opo adequada, para 32 ou 64 bits.
Dar duplo-click no arquivo .msi escolhido (baixado):
Por exemplo:
Windows 32: node-v4.2.4-x86
Windows 64: node-v4.2.4-x64
Executar at o fim,aceitando o License Agreement.
Clicar Install, e prosseguir at o final do Setup.
A varivel PATH deve conter:
C:\Program Files\nodejs ou
C:\Arquivos de Programas\nodejs
Reiniciar o Computador
Para verificar a instalao, os comandos:
node v
npm -v

Projeto Node
Package.json o arquivo que configura cada aplicativo.
Exemplo Bsico de Package.json:
{
"name": "http-server",
"main": "server.js",
"dependencies":
{
"express": "~4.13.3"
}
}
Inicializando App
Criar uma pasta para o projeto:
c:\projetos\mean\node\app
Na tela de comando:
cd c:\projetos\mean\node\app
Em c:\projetos\mean\node\app
npm init
Este comando cria o projeto com o arquivo package.json
Assim criamos um aplicativo com nome app

5
Conjunto MEAN

Trabalhando comNode.js

E aqui temos o contedo de package.json:


{
"name": "app",
"version": "1.0.0",
"description": "Criando um projeto node",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Para completar, precisamos criar o arquivo server.js
em c:\projetos\node\app
Conteudo: console.log(MyFirst Node App!);
A seguir, na tela de comando, em c:\projetos\mean\node\app
node server.js
para startar o aplicativo
Se fizermos alterao em um dos arquivos do projeto,
precisamos dar shutdown e restart do projeto.
Para evitar isso, temos o comando: nodemon
nodemon server.js

Se der mensagem de nodemon no encontrado:


a) Verificar se est instalado
Para saber a localizao, executar o comando:
npm config get prefix
Exemplo: C:\Users\nome\AppData\Roaming\npm
Se no estiver instalado:
npm install -g nodemon

b) necessrio que esteja no path (variveis do sistema).

Observao:
Com nodemon ativado a aplicao restartada
automaticamente
quando efetuamos alguma alterao no projeto.

6
Conjunto MEAN

Node.js

Introduo ao NPM
NPM o nome reduzido de Node Package Manager (Gerenciador de Pacotes do Node).
A NPM duas coisas: Primeiro, e mais importante, um repositrio online para
publicao de projetos de cdigo aberto para o Node.js; Segundo, ele um utilitrio de
linha de comando que interage com este repositrio online, que ajuda na instalao de
pacotes, gerenciamento de verso e gerenciamento de dependncias.

Como exemplo do package.json de um projeto, temos:


{
"name": "http-server",
"main": "server.js",
"dependencies":
{
"express": "latest",
"grunt": "latest"
}
}

A maneira mais prtica de instalar packages com o comando:


npm install
ou
npm update
Instalam as dependncias declaradas no arquivo package.json
armazenando-as em uma sub-pasta denominada node_modules.

Para remover um package:


npm uninstall package name

Para atualizar um package:


npm update packagename

Para instalar um novo package:


npm install packagename -save
Registra como dependncia em package.json

7
Conjunto MEAN

Introduo ao Express

Projeto

Criar pasta c:\projetos\mean\express\proj1

Na tela de comando:
cd c:\projetos\mean\express\proj1
npm init
Este comando cria o projeto com o arquivo package.json.
Informar nome do projeto: proj1
Dar ENTER para todas as outras opes solicitadas.
Criamos assim um aplicativo com nome proj1
Empackage.json alterar main para server.js
No final acrescentar
"dependencies"
{
"name": "proj1",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts":
{
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies":
{
"express": "latest"
}
}

Agora podemos instalar o express, declarado em dependencies em


c:\projetos\mean\express\proj1
com o comando:
npm install

Assim foi criada uma sub-pasta denominada node_modules contendo


a instalao do Express.

8
Conjunto MEAN

Express

Projeto

Criao e especificao do arquivo server.js


var express = require('express');
var app = express();
app.use('/', function(req, res)
{
res.send('Proj1 implementado com Express');
});
app.listen(3000);
console.log('Server running at http://localhost:3000/');
module.exports = app;

Execuo na tela de comando(c:\projetos\mean\express\proj1):


node server

Proj1 fica pendente, com a mensagem:


Server running at http://localhost:3000/

No Browser, o projeto pode ser executado:


localhost:3000

9
Conjunto MEAN

Trabalhando com MongoDB

Um banco relacional organizado em Tabelas e Columas. O MongoDB um banco


NoSql (NotOnlySql), portanto no um banco relacional. organizado em Collections
e Documents. Constitui colees de documentos. Exemplos:

Relacional:
Posts table
Id
Name

Comments table
Id
PostId
Comment

NoSql: {
"title: First Blog Post",
"comments": []
}

BSON Format (JSON-like format, Binary JSON)


Como no JSON, so estruturas de dados com objetos e arrays.
Compreende todos os tipos de dados do JSON, e outros tipos,
como Date Type.

Exemplo de cdigo:
{
"_id": ObjectId("52d02240e4b01d67d71ad577"),
"title": "First Blog Post",
"comments": [...]
}

O formato BSON permite indexar para maior eficincia nas pesquisas do MongoDB.

Comparao de comandos: (relacional e noSql):

select * from Posts where Title like '%mongo%'

db.posts.find({ title:/mongo/ });

10
Conjunto MEAN

MongoDB

shell

Estando instalado, o Mongo permite a chamada com o comando:


mongo
> use mean
ou
mongo mean
> show dbs

>db.posts.insert({title: First Post, user: bob})


>db.posts.find()
> show collections
>db.posts.drop()

Operaes CRUD
Create, Read, Update e Delete so as operaes bsicas que podemos fazer.

Criando um documento com insert()


>db.posts.insert({title:Second Post, user: alice})

Criando um documento com update()


>db.posts.update({
user: alice
},
{
title: Second Post,
user: alice
},
{
upsert: true
})

Mongo procura um documento criado por alice para atualiza-lo.


Se no achar e tiver a opo upsert, ento ele inclui o documento.

Criando um documento com save()


>db.posts.save({title:Second Post, user: alice})

11
Conjunto MEAN

MongoDB

shell

Procurando a coleo de documentos


>db.posts.find()
ou
>db.posts.find({})

Selecionando documentos
>db.posts.find({ user: alice })
>db.posts.find({ user: { $in: [alice, bob] } })
>db.posts.find({ $or: [{ user: alice }, {user: bob}] })
>db.posts.find({ user: alice, commentsCount: { $gt: 10 } })

Atualizando documentos com update()


>db.posts.update
({
user: alice
},
{
$set: { title: Second Post }
},
{
multi: true
})

A propriedade multi: true atualiza todos os documentos selecionados.


Se no colocar a opomulti o update atualiza apenas um documento.

Atualizando documentos com save()


>db.posts.save({
_id: ObjectId(50691737d386d8fadbd6b01d),
title: Second Post,
user: alice
});

Se o mtodo save() no encontrar o objeto, ele inclui.

12
Conjunto MEAN

MongoDB

shell

deletando todos os documentos com remove()


>db.posts.remove()

deletando apenas o primeiro documento selecionado


>db.posts.remove({ user: alice}, true)

deletando todos os documentos selecionados


>db.posts.remove({ user: alice })

13
Conjunto MEAN

Introduo ao Mongoose

uma biblioteca JavaScript que facilita transferncias de dados entre um aplicativo


Express e uma base de dados MongoDB. Permite criar esquemas para os dados que
o aplicativo usa, e prov conexes com o Banco de Dados, validaes, e operaes
para incluir, alterar e excluir documentos. um mdulo do Node.js instalado como
dependncia (dependencies) declarada no package.json (npminstall).

Fazendo conexo com o MongoDB

Em config/env/development.js especificar:

module.exports = {
db: 'mongodb://localhost/workflow',
sessionSecret: 'developmentsessionSecret'
};

Obs.: O format geral seria:


mongodb://username:password@hostname:port/database
Em module.exports estamos usando conexo local (localhost)

Na pasta configcriar um arquivo de nome mongoose.js


com o seguinte cdigo:

varconfig = require('./config'),
mongoose = require('mongoose');

module.exports = function() {
vardb = mongoose.connect(config.db);

returndb;
};

Na tela de comando:
cd c:/projetos/mean/workflow
node server

Obs.:
Se der erro de conexo, verficar se o servio MongoDB est em execuo.

14
Conjunto MEAN

Mongoose
Schemas
Fazer a conexo com a instncia do MongoDB apenas o primeiro passo.
Precisamos ainda criar o schema.
Na pasta app/models criar um arquivo com o nome user.server.model.js
Com o seguinte contedo:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
varUserSchema = new Schema({
firstName: String,
lastName : String,
email : String,
username : String,
password : String
});
mongoose.model('User', UserSchema);

Prximo passo, Registrar o User model


Agora incluimos o user.server.model.js em config/mongoose.js
codificando o require e completando o arquivo da seguinte forma:
varconfig = require('./config'),
mongoose = require('mongoose');
module.exports = function() {
vardb = mongoose.connect(config.db);
require('../app/models/user.server.model');
returndb;
};

Criando novos users com save()


Podemos usar o User model como est, mas para uma organizao mais correta
vamos criar um controller para Users, que vai cuidar das operaes especficas
para o usurio. Ento criamos um novo arquivo na pasta app/controllers com o
nome users.server.controller.js com o seguinte contdo:
var User = require('mongoose').model('User');
exports.create = function(req, res, next) {
var user = new User(req.body);
user.save(function(err) {
if (err) {
return next (err);
} else {
res.json(user);
}
});
}

15
Conjunto MEAN

Mongoose
Schemas
Para testar o users.server.controller.js vamos acrescentar rotas (routes)
que iro chamar os mtodos do controller.
Ento, na pasta app.routes vamos criar o arquivo users.server.routes
com o seguinte contedo:

var users = require('../../app/controllers/users.server.controller');

module.exports = function(app) {
app.route('/users').post(users.create);
};

Obs.:
Tendo em vista que aplicativos Express estaro disponveis como
RESTful API para o AngularJS, mais adequado construir nossas
rotas de acordo com os princpios REST. No cdigo acima, post.
Vamos agora acrescentar em config/express.js o seguinte cdigo:
require('../app/routes/users.server.routes.js') (app);

Para testar:
node server

em outra tela de commando:

curl -X POST -H "Content-Type: application/json" -d


'{"firstName":"First", "lastName":"Last","email":"user@example.com","user
name":"username","password":"password"}' localhost:3000/users

16
Conjunto MEAN

Introduo ao Sequelize

http://docs.sequelizejs.com/en/1.7.0/
The Sequelize library provides easy access to MySQL, MariaDB, SQLite or PostgreSQL
databases by mapping database entries to objects and vice versa. To put it in a nutshell, it's an
ORM (Object-Relational-Mapper). The library is written entirely in JavaScript and can be used in
the Node.JS environment.
Easyinstallation
$ npm install sequelize
$ npm install mysql

Simpleusage
varSequelize=require('sequelize')
,sequelize=newSequelize('database','username','password')

varUser=sequelize.define('User',{
username:Sequelize.STRING,
birthday:Sequelize.DATE
})
sequelize.sync().success(function(){
User.create({
username:'sdepold',
birthday:newDate(1986,06,28)
}).success(function(sdepold){
console.log(sdepold.values)
})
})

http://docs.sequelizejs.com/en/1.7.0/docs/installation/
You have two options to install Sequelize:
1. Install it via NPM (on the commandline):
npm install sequelize

// Then require the installed library in your application code:


varSequelize = require("sequelize")

2. Download the code from the git repository and require it's entry file index.js:

# Checkout the current code from the repository using the commandline
cd path/to/lib
git clone git://github.com/sequelize/sequelize.git

Then require the installed library in your application code:


varSequelize = require(__dirname + "/lib/sequelize/index")

This will make the classSequelizeavailable.

17
Bibliografia

HTML, CSS and JavaScript All in One


Pages: 608
Julie Meloni
SAMS Publishing, 2011
http://it-ebooks.info/book/4546/
Acessadoem 16/02/2016

Secrets of the JavaScript Ninja


Pages: 392
John Resig, Bear Bibeault
Manning, 2012
http://it-ebooks.info/book/3572/
Acessadoem 16/02/2016

MEAN Web Development


Pages: 354
Amos Q. Haviv
Packt Publishing, 2014
http://it-ebooks.info/book/4849/
Acessadoem 16/02/2016

Getting MEAN with Mongo, Express, Angular, and Node


Pages: 440
Simon Holmes
Manning, 2015
http://it-ebooks.info/book/6664/
Acessadoem 16/02/2016

18

Вам также может понравиться