Slides do curso de Node.js e MongoDB do blog LuizTools. Inscreva-se no curso e tenha acesso ao conteúdo completo em http://www.luiztools.com.br/curso-nodejs
5. MongoDB - Movies
const mongodb = require("../config/mongodb");
function getAllMovies(callback){
mongodb.connect((err, db) => {
db.collection("movies").find().toArray(callback);
})
}
repository.js
6. MongoDB - Movies
function getMovieById(id, callback){
mongodb.connect((err, db) => {
db.collection("movies").findOne({_id:
require("mongodb").ObjectId(id)}, callback);
});
}
repository.js
7. MongoDB - Movies
function getMoviePremiers(callback){
var monthAgo = new Date();
monthAgo.setMonth(monthAgo.getMonth() - 1);
monthAgo.setHours(0, 0, 0);
monthAgo.setMilliseconds(0);
mongodb.connect((err, db) => {
db.collection("movies").find({ dataLancamento: {
$gte: monthAgo } }).toArray(callback);
});
}
repository.js
8. MongoDB - Movies
function disconnect(){
return mongodb.disconnect();
}
module.exports = { getAllMovies, getMovieById,
getMoviePremiers, disconnect }
repository.js
9. MongoDB - Movies
const test = require('tape');
const repository = require('./repository');
function runTests(){
var id = null;
//tests here
}
module.exports = { runTests }
repository.test.js
10. MongoDB - Movies
var id = null;
test('Repository GetAllMovies', (t) => {
repository.getAllMovies((err, movies) => {
if(movies && movies.length > 0) id =
movies[0]._id;
t.assert(!err && movies && movies.length > 0,
"All Movies Returned");
t.end();
});
})
repository.test.js
11. MongoDB - Movies
test('Repository GetMovieById', (t) => {
if(!id) {
t.assert(false, "Movie by Id Returned");
t.end();
return;
}
repository.getMovieById(id, (err, movie) => {
t.assert(!err && movie, "Movie by Id
Returned");
t.end();
});
})
repository.test.js
12. MongoDB - Movies
test('Repository GetMoviePremiers', (t) => {
repository.getMoviePremiers((err, movies) => {
t.assert(!err && movies && movies.length > 0,
"Movie Premiers Returned");
t.end();
});
})
repository.test.js
17. Server - Movies
nano /cinema-microservice/movies-
service/src/server/server.js
const express = require('express');
const morgan = require('morgan');
const helmet = require('helmet');
var server = null;
server.js
18. Server - Movies
function start(api, repository, callback){
const app = express();
app.use(morgan('dev'));
app.use(helmet());
app.use((err, req, res, next) => {
callback(new Error('Something went wrong!, err:' +
err), null);
res.status(500).send('Something went wrong!');
})
api(app, repository);
server = app.listen(parseInt(process.env.PORT), () =>
callback(null, server));
}
server.js
19. Server - Movies
function stop(){
if(server) server.close();
return true;
}
module.exports = { start, stop }
server.js
20. Server - Movies
nano /cinema-microservice/movies-
service/src/server/server.test.js
server.test.js
21. Server - Movies
const test = require('tape');
const server = require('./server');
function apiMock(app, repo){
console.log("do nothing");
}
function runTests(){
//tests here
}
module.exports = { runTests }
server.test.js