be mean

Post on 17-May-2015

2.489 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Construindo sistemas com MongoDb, Express, AngularJs e Node.js. Palestra ministrada no TDC São Paulo 2013. Trilha Javascript.

TRANSCRIPT

Be MEAN

Criando aplicações com MongoDb, Express, AngularJs e Node.js

C++JSON/BSON

ReplicaSharding

GridFSMap/Reduce

V8C/C++

I/O AsyncEvent Drive

MVCRoutes

TemplatesDirectives

Dependency InjectionTwo Way Data-binding

Organização dos arquivos

app.jspackage.jsonmodules/

db/public/routes/views/

package.json{ "name": "application-name" , "version": "0.0.1" , "private": true , "dependencies": { "express": "3.0.0" , "jade": ">= 0.0.1" , "mongo": "*" , "mongoose": "*" }}

app.js/**

* Module dependencies.

*/

var express = require('express'),

routes = require('./routes'),

api = require('./routes/api');

var app = module.exports = express();

app.js// Configuration

app.configure(function(){

app.set('views', __dirname + '/views');

app.set('view engine', 'jade');

app.use(express.bodyParser());

app.use(express.methodOverride());

app.use(express.static(__dirname + '/public'));

app.use(app.router);

});

app.jsapp.configure('development', function(){

app.use(express.errorHandler({ dumpExceptions: true,

showStack: true }));

});

app.configure('production', function(){

app.use(express.errorHandler());

});

app.js// Routes

app.get('/', routes.index);

app.get('/user/:id, routes.user);

// JSON API

app.get('/api/user/:id, api.userGet);

app.post('/api/user, api.userPost);

app.put('/api/user, api.userPut);

app.delete('/api/user, api.userDelete);

// redireciona todas outras para o index

app.get('*', routes.index);

app.js// Start server

app.listen(3000, function(){

console.log("Server rodando na porta 3000");

});

routes/api.js/**

* Create user

*/

exports.userPost = function (req, res) {

var user = new User(req.body)

user.save(function (err) {

if (err) {

return res.render('users/signup', {

errors: utils.errors(err.errors),

user: user,

title: 'Sign up'

})

}

}

routes/api.jsexports.userGet = function (req, res, next, id) {

User

.findOne({ _id : id })

.exec(function (err, user) {

if (err)

return next(err);

else

return user;

})

}

public/js/myapp.js'use strict';

angular.module('myApp', ['myApp.filters', 'myApp.

services', 'myApp.directives']).

config(['$routeProvider', '$locationProvider', function

($routeProvider, $locationProvider) {

$routeProvider.when('/user, {templateUrl: 'user',

controller: AppCtrl});

$routeProvider.when('/user/:id, {templateUrl: 'user',

controller: AppCtrl});

$routeProvider.otherwise({redirectTo: '/});

$locationProvider.html5Mode(true);

}]);

public/js/controllers.js'use strict';

/* Controllers */

function AppCtrl($scope, $http, $routeParams) {

var id = $routeParams.id;

$http({method: 'GET', url: '/api/user/'+id}).

success(function(data, status) {

$scope.name = data.name;

$scope.msg = 'Usuário encontrado.';

}).

error(function(data, status {

$scope.msg = 'Usuário não encontrado!';

});

}

modules/db/user.js/**

* Module dependencies.

*/

var mongoose = require('mongoose')

, Schema = mongoose.Schema;

mongoose.connect('mongodb://localhost/database_name);

var db = mongoose.connection;

modules/db/user.js/**

* User Schema

*/

var UserSchema = new Schema({

name: { type: String, default: '' },

email: { type: String, default: '', unique: true },

username: { type: String, default: '' },

hashed_password: { type: String, default: '' },

salt: { type: String, default: '' },

authToken: { type: String, default: '' },

});

mongoose.model('User', UserSchema);

top related